参数
- P - precision。有效范围:[ 1 : 76 ]。决定该数值可具有的十进制位数 (包括小数部分) 。默认情况下,precision 为 10。
- S - 标度。有效范围:[ 0 : P ]。决定小数部分可具有的十进制位数。
- P 在 [ 1 : 9 ] 范围内 - 对应 Decimal32(S)
- P 在 [ 10 : 18 ] 范围内 - 对应 Decimal64(S)
- P 在 [ 19 : 38 ] 范围内 - 对应 Decimal128(S)
- P 在 [ 39 : 76 ] 范围内 - 对应 Decimal256(S)
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))
内部表示
运算与结果类型
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)
- 加法、减法:S = max(S1, S2)。
- 乘法:S = S1 + S2。
- 除法:S = S1。
溢出检查
decimal_check_overflow 设置禁用检查是有意义的。禁用检查后,一旦发生溢出,结果将不正确: