자바에서 소수점을 나타내려면 실수값 표현이 가능한 float이나 double을 사용해야 한다. 정수에서 int를 가장 많이 사용하는 것처럼 실수에서는 double을 많이 쓴다. 정수 연산을 하듯 실수의 연산을 했는데 값이 정확히 떨어지지 않았다.

 

 달의 크기를 1로 두고 오늘 달의 크기를 0.9로 준 뒤 마이너스 연산을 했더니 0.1이 아니라 0.09999999999999998의 결과가 나왔다. float이나 double0.1을 정확히 표현하지 못해 가장 가까운 값으로 나타내기에 발생한 결과다.

 

class CountPractice {

 public static void main(String[] args) {

 

 int moon = 1;

 

 double todayMoon = 0.9;

 double result = moon todayMoon;

 

 System.out.println(result);

 }

}

// 결과 : 0.09999999999999998

 

 0.1의 값을 도출하려면 정수로 연산을 하고 실수로 10.0을 나눠주면 소수를 표현할 수 있다. 8번 째 라인(temp)의 연산까지는 정수로 계산 한 뒤 결과를 나타낼 때 double result에서 10.0을 나눠줬다. 여기서 10.0이 아니라 10이라고 입력하면 이상한 값이 나오니 실수를 정확히 표현하자.

 

class CountPractice {

 public static void main(String[] args) {

 

 int moon = 1;

 

 int moonSize = moon*10;

 int todayMoon = 9;

 int temp = moonSize todayMoon;

 

 double result = temp/10.0;

 System.out.println(result);

 }

}



+ Recent posts