1) Float & Double
- float과 double은 소수를 표현하는데 사용되는 자료형입니다.
이 때, float은 32비트, double은 64비트 자료형입니다.
단, 이 두 자료형은 간단한 계산에서는 사용해도 되지만,
돈 계산과 같은 중요한 계산에서는 이 타입들을 사용해서는 안됩니다.
왜냐하면 float과 double은 각각 32비트, 64비트를 넘어서는 계산을 제공하지 못하기 때문입니다.
자바에서 돈 계산과 같은 정확한 계산은 java.math.BigDecimal 클래스를 사용해야 합니다 .
2) Float & Double in Oracle Java Tutorial
- 오라클의 자바 튜토리얼에는 float과 double에 대해서 각각 이렇게 설명합니다.
float - Single precision 32-bit IEEE 754 floating point
double - Double precision 64-bit IEEE 754 floating point
- 여기서는 3가지 새로운 용어가 등장합니다.
그것은 Single precision, Double precision, Floating point입니다.
우리말로 번역하면 단일 정밀도, 배 정밀도, 부동 소수점입니다.
- 즉, float은 단일 정밀도(단정도) 32 bit 부동 소수점 방식이고,
double은 배 정밀도(배정도) 64 bit 부동 소수점 방식입니다.
여기서 정밀도, 부동 소수점이라는 용어가 등장했는데,
이 중에서 정밀도에 대해 우선 이해해보겠습니다.
3) 정밀도
- 정밀도란 저장된 값이 실제 값 대비 '얼마나 정확한지'를 나타내는 기준입니다.
예를 들어, float은 정밀도 약 6~7자리수를 보장하고, double은 정밀도 약 15~16자리수를 보장합니다.
따라서 근사값을 좀 더 정확히 보장하려면 float보다는 double을 쓰는 편이 좋습니다.
4) 고정 소수점과 부동 소수점
- 부동 소수점을 이해하기 위해서는 우선 고정 소수점 방식을 이해해야 합니다.
고정 소수점 방식은 실수를 부호, 정수부, 소수부로 나눠서 표현하는 방식입니다.
- 고정 소수점 방식은 구현은 편리하지만, 표현할 수 있는 수의 범위가 좁다는 단점이 있습니다.
- 반면, 부동 소수점 방식은 실수를 부호, 지수부, 가수부로 나눠서 표현합니다.
부동 소수점 방식은 표현할 수 있는 수의 범위가 넓다는 장점이 있습니다.
- 다음은 32 bit float 부동소수점 표현 방식입니다.
이를 단정도(Single-precision) 방식이라고 합니다.
단정도 방식은 부호 비트(1) + 지수부(8) + 가수부(23) = 32비트로 구성됩니다.
다음은 64 bit double 부동소수점 표현 방식입니다.
이를 배정도(Double-precision) 방식이라고 합니다.
배정도 방식은 부호 비트(1) + 지수부(11) + 가수부(52) = 64비트로 구성됩니다.
참고
자바의 신 1권
코드라떼 https://www.codelatte.io/courses/java_programming_basic/ZWV86NEECRUFIQIE
http://www.tcpschool.com/cpp/cpp_datatype_floatingPointNumber
'Java' 카테고리의 다른 글
자바 스레드(1) (0) | 2022.08.06 |
---|---|
CheckedException vs UncheckedException (0) | 2022.08.03 |
자바 int와 long 자료형 (0) | 2022.07.31 |
Java 8 람다 표현식 (0) | 2022.07.21 |
Java HashMap 이해하기 (0) | 2022.07.01 |