BigDecimal, 정밀도 및 스케일
예를 들어 JPA와 같이 내 응용 프로그램의 번호에 BigDecimal을 사용하고 있습니다. '정밀도'와 '스케일'이라는 용어에 대해 약간 조사했지만 정확히 무엇인지 이해하지 못합니다.
누구든지 BigDecimal 값에 대한 '정밀도'와 '스케일'의 의미를 설명 할 수 있습니까?
@Column(precision = 11, scale = 2)
감사!
A BigDecimal
는 임의 정밀도 정수와 32 비트 정수 스케일의 두 값으로 정의됩니다 . 의 값 BigDecimal
은로 정의됩니다 .
정도:
정밀도는 스케일 없음의 값의 자리수입니다. 예를 들어 숫자 123.45의 경우 반환되는 정밀도는 5입니다.
따라서 정밀도 는 임의 정밀도 정수의 길이를 나타냅니다. 다음은 척도가 같지만 정밀도가 다른 숫자의 몇 가지 예입니다.
- 12345/100000 = 0.12345 // 스케일 = 5, 정밀도 = 5
- 12340/100000 = 0.1234 // 스케일 = 5, 정밀도 = 4
- 1/100000 = 0.00001 // 스케일 = 5, 정밀도 = 1
숫자가 0 (예 : 0.000)과 같은 특수한 경우 정밀도는 항상 1입니다.
규모:
0 또는 양수인 경우 스케일 은 소수점 오른쪽에있는 자릿수입니다. 음수 인 경우 숫자의 스케일되지 않은 값에 스케일 부정의 거듭 제곱에 10을 곱합니다. 예를 들어 스케일이 -3이면 스케일되지 않은 값에 1000을 곱한 것을 의미합니다.
이것은 'BigDecimal'의 정수 값에를 곱함을 의미 합니다.
다음은 스케일이 다른 동일한 정밀도의 몇 가지 예입니다.
- 스케일 5 = 0.12345 인 12345
- 스케일 4 = 1.2345 인 12345
- …
- 축척 0 = 12345 인 12345
- 스케일 -1 인 12345 = 123450 †
BigDecimal.toString :
에 대한 toString
방법 BigDecimal
은 척도 및 precision
. (이 점을 지적 해 주신 @RudyVelthuis에게 감사드립니다.)
- 이면
scale == 0
정수가 그대로 인쇄됩니다. - 이면
scale < 0
전자 표기법이 항상 사용됩니다 (예 : 5 스케일 -1은 "5E + 1"을 생성 함). - 경우
scale >= 0
와precision - scale -1 >= -6
일반 진수가 생산된다 (예를 들어 규모 1 "1000000.0"생산 10000000) - 그렇지 않으면 E- 표기가 사용됩니다. 예를 들어 10 스케일 8은
precision - scale -1
같음 이 -6보다 작기 때문에 "1.0E-7"을 생성합니다 .
더 많은 예 :
- 19/100 = 0.19 // 정수 = 19, 스케일 = 2, 정밀도 = 2
- 1/1000 = 0.0001 // 정수 = 1, 스케일 = 4, 정밀도 = 1
정밀도 : 총 유효 자릿수
스케일 : 소수점 오른쪽 자릿수
자세한 내용은 BigDecimal
클래스 문서를 참조하십시오.
Javadoc 인용 :
정밀도는 스케일되지 않은 값의 자릿수입니다.
과
0 또는 양수인 경우 스케일은 소수점 오른쪽에있는 자릿수입니다. 음수 인 경우 숫자의 스케일되지 않은 값에 스케일 부정의 거듭 제곱에 10을 곱합니다. 예를 들어 스케일이 -3이면 스케일되지 않은 값에 1000을 곱한 것을 의미합니다.
예제 주석에서 최대 자릿수는 소수점 뒤 2 개, 앞 9 개 (총 11 개)입니다. 123456789,01
참조 URL : https://stackoverflow.com/questions/35435691/bigdecimal-precision-and-scale
'programing' 카테고리의 다른 글
for 루프에서 생성 된 Pandas 데이터 프레임 추가 (0) | 2021.01.17 |
---|---|
Retrofit 2를 사용하여 모든 요청에 쿼리 매개 변수를 추가하는 방법이 있습니까? (0) | 2021.01.17 |
void main과 int main의 차이점은 무엇입니까? (0) | 2021.01.17 |
소켓 수락- "열린 파일이 너무 많습니다" (0) | 2021.01.17 |
파이썬에서 숫자 비교를 위해“is”또는“==”를 사용하는 것이 더 낫습니까? (0) | 2021.01.17 |