반응형
개요
그냥 /100 한 후에 * 100 을 한 것 뿐인데 오차가 생긴다.
본문
double doubleA = 3.4;
doubleA = doubleA / 100 \* 100;
System.out.println(doubleA);
이렇게만 하여도 값은. 3.4000000000000004 이런식으로 출력이 된다. 여태 몰랐는데...
Float 는 어떨까 싶었다.
https://stackoverflow.com/questions/3413448/double-vs-bigdecimal
해결
BigDecimal
을 이용한다고 한다.
// 나눗셈
BigDecimal bd1 = new BigDecimal("10");
BigDecimal bd2 = new BigDecimal("3");
String a = bd1.divide(bd2, 4, BigDecimal.ROUND_HALF_UP).toString();
// 3.3333 이 출력됨
// 곱셈
.multiply(BigDecimal("100")).setScale(1,BigDecimal.ROUND\_FLOOR).toString() 과 같은 식으로 이용하기도 하는 듯...
반응형
'개발 > 자바 Java' 카테고리의 다른 글
[Java][기타 언어들] Instanceof 에 대해서 (1) | 2019.03.13 |
---|---|
[Java] JAVA - JDK - JRE - Java EE - Java ME - Java SE - Java FX (0) | 2016.06.17 |
[Java] (error) error : java.lang.UnsupportedClassVersionError (0) | 2016.06.07 |
[Java] webservlet annotation (0) | 2016.06.07 |
[자바 Java] XML 값가져오기 (0) | 2016.05.01 |
[Java] String 문제. StringBuffer, StringBuilder 등 (0) | 2016.04.29 |
자바 와 서블릿 (0) | 2011.07.29 |
rs.getDate 와 rs.getTimestamp() 의 차이 (0) | 2011.02.17 |