매개변수
- P - 정밀도. 유효 범위: [ 1 : 76 ]. 숫자가 가질 수 있는 전체 10진수 자릿수(소수 부분 포함)를 결정합니다. 기본 정밀도은 10입니다.
- S - scale. 유효 범위: [ 0 : P ]. 소수 부분이 가질 수 있는 10진수 자릿수를 결정합니다.
- 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 설정으로 검사를 비활성화하는 것이 좋습니다. 검사를 비활성화한 상태에서 오버플로우가 발생하면 결과가 올바르지 않을 수 있습니다: