본문 바로가기
카테고리 없음

[JAVA]정확한 계산

by codeZeroMan 2022. 4. 25.
public class Apple{
    public static void main(String[] args) {
        int apple = 1;
        double priceUnit = (double) apple/10;
        int num =7;

        double result = apple - num*priceUnit;
        System.out.println(result);
    }
}
  • 사과 한개를 10개의 조각으로 나누고 그것을 7명에서 나눠줄때 남은 사과의 양을 출력하는 프로그램이다.
  • "사과 한개 - 조각의 크기 X 사람의 수 = 남은 사과의 양" 이라는 수식이 나오며 이를 적용했다. 
  • 이때 우리가 기대하는 값은 0.3이지만프로그램에서는 0.29999999999999993라는 값이 나온다.
  • 자바에서 부동소수점 타입(double, float)은 0.1을 정확히 표현할수 없어 근사값을 사용하는데 이러한 연산을 하다보면 정확한 0.3이 아닌 근사한 값이 나오게 되는것이다.
public class Apple {
    public static void main(String[] args) {
       int apple = 1;
       int  totalPieces = apple*10;
       int num =7;


       double result = (double) (totalPieces - num )/10 ;
        System.out.println(result);
    }
}
  • 정수로 계산을 한 이후 부동소수점으로 형변환하여 표현을 한다.