Big Decimal, 정밀도 및 확장성
예를 들어 JPA를 사용하는 경우 어플리케이션 내 번호에 Big Decimal을 사용하고 있습니다.나는 '정밀'과 '척도'라는 용어에 대해 조금 조사를 해봤지만 정확히 무엇인지 모르겠다.
Big Decimal 값에 대한 '정밀'과 '스케일'의 의미를 설명해 줄 수 있는 사람?
@Column(precision = 11, scale = 2)
감사합니다!
A BigDecimal
는 임의의 정밀도 정수와 32비트 정수 스케일의 두 가지 값으로 정의됩니다.의 값BigDecimal
정의되어 있다.
정밀도:
정밀도는 스케일 해제된 값의 자릿수입니다.예를 들어 123.45의 경우 반환되는 정밀도는 5입니다.
즉, 정밀도는 임의의 정밀도 정수의 길이를 나타냅니다.다음은 같은 척도로 정밀도가 다른 숫자의 예입니다.
- 12345 / 100000 = 0.12345 // 스케일 = 5, 정밀도 = 5
- 12340 / 100000 = 0.1234 // 스케일 = 4, 정밀도 = 4
- 1/100000 = 0.00001 // 스케일 = 5, 정밀도 = 1
숫자가 0(0.000)인 특별한 경우 정밀도는 항상 1입니다.
규모:
0 또는 양의 경우 스케일은 소수점 오른쪽에 있는 자릿수입니다.음수일 경우 스케일링되지 않은 숫자의 값에 10을 곱하여 스케일 부정의 거듭제곱합니다.예를 들어 척도가 -3이면 스케일링되지 않은 값에 1000을 곱한 것입니다.
이것은 'BigDecimal'의 정수 값에.
다음은 척도가 다른 동일한 정밀도의 몇 가지 예입니다.
- 스케일 5의 12345 = 0.12345
- 스케일 4의 12345 = 1.2345
- …
- 스케일 0의 12345 = 12345
- 스케일 -1 = 123450 †의 12345
BigDecimal.toString:
그toString
에 대한 방법BigDecimal
규모에 따라 다르게 동작합니다.precision
(@RudyVelthuis님이 지적해 주셔서 감사합니다.)
- 한다면
scale == 0
이 정수는 그대로 출력됩니다. - 한다면
scale < 0
, E-Notation은 항상 사용됩니다(예: 5 스케일 -1은 "5E+1"을 생성합니다). - 한다면
scale >= 0
그리고.precision - scale -1 >= -6
평소 10진수가 생성된다(예: 10000000 척도 1은 "190000"을 생성한다).0") - 그렇지 않으면 E-Notation이 사용됩니다. 예를 들어 10 스케일 8은 다음 시간 이후부터 "1.0E-7"을 생성합니다.
precision - scale -1
동등.-6 미만입니다.
기타 예:
- 19/100 = 0.19 // 정수 = 19, 척도 = 2, 정밀도 = 2
- 1/1000 = 0.0001 // 정수 = 1, 스케일 = 4, 정밀도 = 1
정밀도:유효 자리수의 합계
척도: 소수점 오른쪽에 있는 자릿수
상세한 것에 대하여는, 클래스의 메뉴얼을 참조해 주세요.
Javadoc 인용:
정밀도는 스케일 해제된 값의 자릿수입니다.
그리고.
0 또는 양의 경우 스케일은 소수점 오른쪽에 있는 자릿수입니다.음수일 경우 스케일링되지 않은 숫자의 값에 10을 곱하여 스케일 부정의 거듭제곱합니다.예를 들어 척도가 -3이면 스케일링되지 않은 값에 1000을 곱한 것입니다.
, 자릿수는 이전(입니다.「 2 」 、 「 9 ( 11 ) 。123456789,01
Precision은 숫자의 유효 자리수의 합계입니다.스케일은 소수점 오른쪽에 있는 자릿수입니다.
예:
123.456 Precision=6 스케일=3
10 Precision=2 스케일=0
-96.9923 정밀도=6 스케일=4
0.0 정밀도=1 척도=1
음의 척도
음수 척도 값의 경우 다음 공식을 적용합니다. 결과 = (지정된 숫자) * 10 ^ (-(척도 값))예
지정된 번호 = 1234.56
척도 = -5
-> (1234.56) * 10^(-(-5))
-> (1234.56) * 10^(+5)
-> 123456000
참고 자료: https://www.logicbig.com/quick-info/programming/precision-and-scale.html
언급URL : https://stackoverflow.com/questions/35435691/bigdecimal-precision-and-scale
'programing' 카테고리의 다른 글
MySQL BETWEEN 쿼리가 인덱스를 사용하지 않음 (0) | 2022.10.02 |
---|---|
Java에서 자동 박스와 언박스를 사용하는 이유는 무엇입니까? (0) | 2022.10.02 |
Scala에서 통합 및 루프를 최적화하려면 어떻게 해야 합니까? (0) | 2022.10.02 |
XAMPP를 사용하여 로컬 WordPress 설치를 완료할 수 없습니다. (0) | 2022.10.02 |
AWS: 컴퓨터에서 RDS 데이터베이스에 연결할 수 없음 (0) | 2022.10.02 |