2016-09-29 2 views
0

java에서 500을 BigDecimal로 처리했습니다. 그리고 내가 {・UnscaledValue = 5 ・Scale = -2 ・Precision = 0} 으로 바뀌 었습니다. 왜 정밀도가 0인지 이해하지 못합니다. 나는 그것이 1 일 수 있다고 생각했습니다. 아무도 설명 할 수 있습니까?자바에서 큰 십진 정밀도 제로 평균은 무엇입니까

+4

코드 plz을 표시하십시오. – passion

+0

당신이 알아야 할 이유가 있을까 아니면 호기심이 생기는 이유가 있습니까? –

+1

코드없이 질문하는 것이 명확하지 않기 때문에이 질문을 닫으려고합니다. 이것은 좋은 질문 일 수 있지만 코드가 필요합니다. –

답변

2

가장 간단한 방법으로 구성 (500)의 정밀도, 3.

scala> new java.math.BigDecimal("500").precision() 
res0: Int = 3 

당신이 뭔가 다른 것을했다면, 당신은 코드를 표시해야합니다 그래서 우리는 당신이 무슨 짓을했는지 알고있다.

the documentationprecision에서의 의미는 :

정밀도는 실제 크기의 값의 자리수. 0 값의 정밀도는 1입니다.

+0

스케일이 -2이고 unscaledValue가 5이면 5 * 10^2로 저장됩니다. 그렇다면 정밀도는 1이 아니라 0이 아니라 3이되어야합니다. –

+0

도 3을 얻었습니다. 새로운 BigDecimal (500.0)도 시도했지만, 여전히 3이고 스케일은 0입니다. OP는 아마도 0의 정밀도를 가질 수 있습니다. –

+0

@ OleV.V .: 부동 소수점 유형 (double)에서 BigDecimal을 인스턴스화하지 마십시오. 그러나 x = new BigDecimal ("5e2")'또는 x = new BigDecimal ("5"). movePointRight (2);'와 같은 것을 사용하거나 간단한 calucaltion에서' unscaledValue'는'5'이고'scale'은'-2'입니다. 따라서 유일한 문제는 정밀도가 '0'인 이유입니다. 정의에 따라 '1'이어야합니다. –

관련 문제