package ch03.sec04;

public class AccuracyExample1 {
	public static void main(String[] args) {
		int apple = 1;
		double pieceUnit = 0.1;
		int number = 7;
		
		double result = apple - number*pieceUnit;
		System.out.println(result);
	}
}
0.29999999999999993

result의 값이 정확히 0.3이 되지 않는다

-> 부동 소수점 방식을 사용하는 실수 타입에서 흔히 일어난다

 

정확한 계산이 필요하다면 정수 연산으로 변경해서 사용하는 것이 좋다

package ch03.sec04;

public class AccuracyExample2 {
	public static void main(String[] args) {
		int apple = 1;
		int totalPieces = apple * 10;
		int number = 7;
		
		int result = totalPieces - number;
		System.out.println(result);
		System.out.println(result / 10.0);
	}
}
3
0.3
반응형

+ Recent posts