결과로 0.799999999... 이러한 값을 받게된다.
/*
* BigDecimal 사용
*/
BigDecimal value1 = new BigDecimal("0.7");
BigDecimal value2 = new BigDecimal("0.1");
// 더하기
BigDecimal addResult = value1.add(value2);
System.out.println("더하기 : " + addResult);
// 빼기
BigDecimal subtractResult = value1.subtract(value2);
System.out.println("빼기 : " + subtractResult);
// 곱하기
BigDecimal multiplyResult = value1.multiply(value2);
System.out.println("곱하기 : " + multiplyResult);
// 나누기
BigDecimal divideResult = value1.divide(value2);
System.out.println("나누기 : " + divideResult);
// 나머지
BigDecimal remainderResult = value1.remainder(value2);
System.out.println("나머지 : " + remainderResult);
java.math.RoundingMode에 정의되어 있습니다.
상수명 | 설명 |
---|---|
HALF_UP | 반올림 |
UP | 0에서 멀어지도록 올림 -.5.5의 경우 -6으로 |
DOWN | 0에서 가까워지도록 내림, -5.5의 경우 -5로 |
CEILING | 양의 무한대에 근접하도록, 양수인 경우 UP과 같고, -5.5인 경우 소수점 이하 첫째자리에서 동작할 경우 -5가 됨 |
FLOOR | 음의 무한대에 근접하도록, 양수인 경우 DOWN과 같고, -.5.5인 경우 소수점 이하 첫째자리에서 동작할 경우 -6이 된다. |
// 소수점 버리는 나머지
BigDecimal value3 = new BigDecimal("7.0");
BigDecimal value4 = new BigDecimal("3.0");
divideResult = value3.divide(value4, RoundingMode.DOWN);
System.out.println("소수점 버리는 나머지 : " + divideResult);
divideResult = value3.divide(value4, 2, RoundingMode.HALF_UP);