본문 바로가기
Programming Languages/JavaScript

[JavaScript] 64비트 부동소수점

by IamBeau 2022. 6. 28.

https://medium.com/@syalot005006/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%8B%A4%EC%88%98-%EA%B3%84%EC%82%B0-%EC%98%A4%EB%A5%98-a72ec3326b50

 

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진법 사용

https://ourcalc.com/2%EC%A7%84%EC%88%98-%EB%B3%80%ED%99%98%EA%B8%B0/

 

Javascript Number 64비트 부동소수점

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

https://medium.com/@syalot005006/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%8B%A4%EC%88%98-%EA%B3%84%EC%82%B0-%EC%98%A4%EB%A5%98-a72ec3326b50

 

 


참고 사이트

 

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

댓글