실수
Last updated
Last updated
실수는 정수와 다른 형태의 저장 방식인 부동소수점 표기방식에 의해 저장되며, 에서 살펴볼 수 있다. 중요한 특징들을 정리하면 다음과 같다.
실수의 종류는 2가지이다(float
: 4byte, double
: 8byte)
실수의 기본형태는 double
이다.
실수가 포함된 계산은 결과가 무조건 실수이다.
실수는 표시하는 값이 정밀하지 않다.
실수는 저장공간의 크기와 관계없이 정수보다 크다.
실수는 순환형 구조를 가지지 않으며, 무한대라는 값을 허용한다.
위의 예제를 통해 float
와 double
의 초기화 방식의 차이에 대해 살펴볼 수 있다. double
이 기본형태이기 때문에 3.14
는 별다른 표시가 없다면 double
로 인식된다. 따라서 float
형태로는 저장될 수 없어 오류가 발생하게 된다.
위의 예제는 각각 소수점 30자리의 숫자를 float
와 double
형태의 변수에 저장한 뒤 출력했을 때 표시되는 소수점의 길이를 살펴보기 위한 예제이다. 즉, 각각의 실수 형태에 대한 정확도가 얼마나 되는지를 살펴보는 것이 목적이다.
출력 결과는 다음과 같다.
double
이 float
보다 정확도가 높은 것은 사실이나 둘 다 온전한 숫자를 다 포함할 수 없다는 특징을 가지고 있다. 따라서 정확한 계산을 수행해야 할 경우에는 자바에서 기본적으로 제공하는 실수를 이용하여 계산을 하기 어려우며, 별도의 도구를 이용해야 한다.
실행하면 다음과 같은 결과가 나온다.
앞서 정수를 살펴볼 때 10 / 3
이 3
임을 확인했으나 위의 코드는 실수가 포함되어있기 때문에 결과가 실수로 나오는 것을 확인할 수 있다. 좀 더 정확히 이야기하면, 계산식에 포함된 가장 큰 데이터 형태에 맞추어 출력된다는 것을 소수점 자리수를 통해 알 수 있다.
자료형의 크기에 대해서는 별도의 문서를 통해 정리하도록 한다.
결과는 다음과 같이 출력된다.
출력되는 값에 대한 설명은 다음과 같다.
Infinity : 양의 무한대를 의미한다. 음의 무한대는 -Infinity
이며 둘은 같지 않다.
NaN : Not a Number
의 줄임말이며, 숫자가 아니라는 의미이다.
정수에서는 오류가 발생하지만, 실수에서는 이와 같이 특수값들이 출력되므로 이용에 참고하도록 한다.