BACKEND
0.1 + 0.2 = ?
나를찾는아이
2023. 8. 22. 15:38
728x90
반응형
0.1 + 0.2 는 무엇일까요?
0.1 + 0.2 수학적으로 우리가 암산으로도 쉽게 결과를 대답할수 있습니다
답은 0.3 입니다
이걸 컴퓨터가 계산하면 어떻게 될까요?
// java
public class HelloWorld{
public static void main(String []args){
System.out.println(0.1+0.2); // 0.30000000000000004
}
}
// swift
print(0.1+0.2) // 0.30000000000000004
// js
0.1 + 0.2 = 0.30000000000000004
공통적으로 0.3이 아닌 0.300.....4라는 답을 주고 있습니다
2진법을 이용하여 계산하는 컴퓨터가 소수점을 계산할때 발생할수밖에 없는 문제입니다
0.1 + 0.2 === 0.3 // false
그래서 다음과 같은 연산은 영원히 true에 닿을수 없는 문제가 발생합니다
여러분이 이를 핸들링할수 있는 여러방법이 있습니다
1. 적절한 자리수에서 반올림을 하는것도 방법이구요
2.
function equal(x, y) {
return Math.abs(x - y) < Number.EPSILON;
}
const x = 0.2;
const y = 0.3;
const z = 0.1;
console.log(equal(x + z, y)); // true
javascript는 Number.EPSILON을 통해 컴퓨터가 계산할수 있는 가장 작은수를 검증하여 접근할수 있는 방법도 있습니다
3.
https://github.com/MikeMcl/decimal.js
연산을 돕는 별도의 패키지를 사용하는 방법도 있습니다
728x90
반응형