
0.1 + 0.2 는 0.3이 아니다?!
// 0.1 + 0.2 는 ?
console.log(0.1 + 0.2); // 0.30000000000000004 출력
2진법과 10진법
- 사람은 0~9라는 10가지의 숫자를 이용해서 수를 나타내는 10진법 사용
- 컴퓨터는 0과 1이라는 두 개의 숫자만을 사용하여 수를 나타내는 2진법 사용

Javascript Number 64비트 부동소수점
- 자바스크립트에서 숫자는 '64 비트 IEEE 754 형식'으로 다뤄짐(64비트 중 52비트는 숫자를 저장하는 데 사용되고, 11비트는 소수점 위치를(정수는 0), 1비트는 양수/음수 부호를 저장하는 데 사용)
- 10진법으로 표현된 수를 2진법으로 변환 시 64비트를 초과하는 무한소수가 발생할수도 있는데, 64비트 공간에 맞도록 유한하게 근사치로 표현하려다 보니 미세한 값들이 초과하거나 손실
- Javascript 를 사용하여 수를 연산하는 경우 '64비트 부동소수점'을 고려하여 올바르게 연산할 수 있는 외부 라이브러리를 사용 ('BigNumber.js', 'Big.js', 'Decimal.js')

참고 사이트
2진수 변환기, 정수및 소수 10진수↔2진수 변환 | OurCalc
10진수를 2진수로 또는 2진수를 10진수로 직접 손으로 변환하려면 번거롭죠. 2진수 변환기를 이용하여 변환하려는 수를 입력하면 자동으로 변환된 값을 확인할 수 있습니다. 소수인 경우도 변환
ourcalc.com
자바스크립트의 실수 계산 오류
자바스크립트에서 0.1과 0.2를 더하면 0.3이 아닌 0.30000000000000004가 나온다. 도대체 왜 이럴까?
medium.com
'Programming Languages > JavaScript' 카테고리의 다른 글
[JavaScript] TDZ(Temporal Dead Zone) (0) | 2024.08.10 |
---|---|
[JavaScript] 호이스팅 (Hoisting) (0) | 2024.08.10 |
[JavaScript] 연산자 (0) | 2022.06.30 |
[JavaScript] 변수 (0) | 2022.06.28 |
JavaScript 란? (0) | 2022.06.28 |
댓글