본문 바로가기
개발/자바 Java

[JAVA] Double Float 형의 오차

by 언제나초심. 2016. 6. 11.
반응형

개요

그냥 /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() 과 같은 식으로 이용하기도 하는 듯...
반응형