Paramètres
- P - précision. Plage valide : [ 1 : 76 ]. Détermine le nombre total de chiffres décimaux qu’un nombre peut avoir (y compris la partie fractionnaire). Par défaut, la précision est de 10.
- S - échelle. Plage valide : [ 0 : P ]. Détermine le nombre de chiffres décimaux que la partie fractionnaire peut avoir.
- P de [ 1 : 9 ] - pour Decimal32(S)
- P de [ 10 : 18 ] - pour Decimal64(S)
- P de [ 19 : 38 ] - pour Decimal128(S)
- P de [ 39 : 76 ] - pour Decimal256(S)
Plages de valeurs de Decimal
- Decimal(P, S) - (-1 * 10^(P - S), 1 * 10^(P - S))
- Decimal32(S) - (-1 * 10^(9 - S), 1 * 10^(9 - S))
- Decimal64(S) - (-1 * 10^(18 - S), 1 * 10^(18 - S))
- Decimal128(S) - (-1 * 10^(38 - S), 1 * 10^(38 - S))
- Decimal256(S) - (-1 * 10^(76 - S), 1 * 10^(76 - S))
Représentation interne
Opérations et type de résultat
Decimal produisent un type de résultat plus large (quel que soit l’ordre des arguments).
Decimal64(S1) <op> Decimal32(S2) -> Decimal64(S)Decimal128(S1) <op> Decimal32(S2) -> Decimal128(S)Decimal128(S1) <op> Decimal64(S2) -> Decimal128(S)Decimal256(S1) <op> Decimal<32|64|128>(S2) -> Decimal256(S)
- addition, soustraction : S = max(S1, S2).
- multiplication : S = S1 + S2.
- division : S = S1.
Decimal et des entiers, le résultat est un Decimal de même taille que l’argument.
Les opérations entre Decimal et Float32/Float64 ne sont pas définies. Si vous en avez besoin, vous pouvez convertir explicitement l’un des arguments à l’aide des fonctions intégrées toDecimal32, toDecimal64, toDecimal128 ou toFloat32, toFloat64. Gardez à l’esprit que le résultat perdra en précision et que la conversion de type est une opération coûteuse en calcul.
Certaines fonctions appliquées à Decimal renvoient un résultat de type Float64 (par exemple, var ou stddev). Les calculs intermédiaires peuvent toutefois encore être effectués en Decimal, ce qui peut entraîner des résultats différents entre des entrées Float64 et Decimal ayant les mêmes valeurs.
Vérifications de dépassement
decimal_check_overflow. Lorsque les vérifications sont désactivées et qu’un dépassement se produit, le résultat sera incorrect :