컴퓨터가 표현하는 실수는 정수와는 조금 다른 방식으로 표현한다.
실수는 정수와 표현 방식이 다르며, 지수와 가수를 구분해서 표현하는 방식이 부동 소수점 방식
이다. 이 방식은 더 많은 실수를 좀 더 세밀하게 표현 할 수 있다.
실수 자료형에는 float형과 double형이 있다.
1. float형 - 부호 1비트, 지수부 8비트, 가수부 23비트로 총 32비트(4바이트)를 한다.
2. double형 - 부호 1비트, 지수부 11비트, 가수부 52비트로 총 64비트(8바이트)를 사용하여 좀 더 정밀한 실수를 표현한다.
자바에서 실수는 double형을 기본으로 사용한다.
public class Sample {
public static void main(String[] args) {
double dnum = 3.14;
float fnum = 3.14f; // float형은 값 대입시 식별자를 붙여야한다. f 또는 F
System.out.println(dnum); // 3.14
System.out.println(fnum); // 3.14
}
}
지수와 기수로 나타내는 부동 소수점 방식은 지수로 표현되는 값이 0을 나타낼 수 없다.
따라서 부동 소수점 값을 연산하면 약간의 오차가 발생할 수 있다.
public class Sample {
public static void main(String[] args) {
double dnum = 1;
for(int i = 0; i < 10000; i++) {
dnum += 0.1;
}
System.out.println(dnum); // 1001.000000000159
}
}