반올림에 문제가 있습니다. 특히, 모든 자바 독을 읽은 후, 나는 다음과 같은 코드를 기다리고 있었다 :java.math.RoundingMode는 어떻게 작동합니까?
int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
이 n + 0.56
를 반환 할 수 있습니다. 대신, 이들은 0
4
까지 n
의 반환 값은 다음과 같습니다
int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
각각의 모든 n
에 대한 결과로 n + 0.55
을 기대 :
new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
0.56
new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
1.55
new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
2.56
new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
3.56
new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
4.55
나는 또한 반올림 모드를 변경하기 위해 노력했다. 대신 반환 값은 이전 예제와 정확히 동일합니다.
new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
0.56
new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
1.55
new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
2.56
new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
3.56
new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
4.55
누락 된 부분이 있습니까?
대단히 감사합니다. 나는 뭔가를 잊고 있었지만 문제를 지적 할 수는 없었습니다. – ilCatania