자바에서 소수점을 나타내려면 실수값 표현이 가능한 float이나 double을 사용해야 한다. 정수에서 int를 가장 많이 사용하는 것처럼 실수에서는 double을 많이 쓴다. 정수 연산을 하듯 실수의 연산을 했는데 값이 정확히 떨어지지 않았다.
달의 크기를 1로 두고 오늘 달의 크기를 0.9로 준 뒤 마이너스 연산을 했더니 0.1이 아니라 0.09999999999999998의 결과가 나왔다. float이나 double은 0.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);
}
}
'문돌이의 IT > 자바(Java)' 카테고리의 다른 글
자바(Java) 배열(Array) 활용하기 (0) | 2016.02.28 |
---|---|
자바(Java) Math클래스 활용하기 (0) | 2016.02.27 |
[문돌이의IT]자바(Java) boolean, 캐스팅연산자, 자동형식변환 (0) | 2016.02.19 |
[문돌이의IT] 자바(Java) 반복문 for문의 예외형식 3가지 (0) | 2016.02.16 |
[문돌이의IT] 자바(Java)기초 종합예제 풀이 (3) | 2016.02.15 |