카테고리 없음
[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);
}
}
- 정수로 계산을 한 이후 부동소수점으로 형변환하여 표현을 한다.