[JS]부동 소수점 방식

zzincode·2025년 4월 9일
0

JavaScript

목록 보기
24/24
post-thumbnail

자바스크립트의 숫자 표현 방식

자바스크립트에서 모든 숫자는 IEEE754 표준을 따르는 64비트 부동 소수점 형식으로 저장

부동 소수점 방식을 쓰는 이유

  1. 표현 범위가 넓다
  2. 국제 표준이라 호환성이 뛰어나다
  3. 성능이 뛰어나다

🚨 부동 소수점 방식의 단점 : 정확하지 않음

일부 소수점 연산에서 정확한 값을 저장하지 못하는 한계를 가지고 있음

⇒ 부동 소수점 형식의 한계

0.1과 0.2를 이진수로 변환하면 무한 반복되는 소수로 표현되어 컴퓨터는 근사값으로 저장하게 된다.

따라서 0.1 + 0.2 는 0.3과 일치할 수 없기에 false가 반환된다.

해결 방법

  1. 특정 자릿수까지 반올림하기

    • toFixed()
    • toPrecision()

    문제 : 숫자가 문자열로 변환되는 문제 발생

  2. Number.EPSILON 을 활용하여 비교

    Number.EPSILON은 자바스크립트에서 표현할 수 있는 가장 작은 수


그럼에도 부동 소수점 방식을 쓰는 이유

모든 숫자를 정밀하게 계산하는 것보다 적당한 오차를 감수하고 범용적으로 빠르게 처리하는게 더 실용적이기 때문!

  • 대부분의 웹 애플리케이션은 소수점 오차가 문제가 되는 일이 적음
  • JS는 가볍고 범용적인 언어이기에 복잡한 수치 계산보다 효율성 중심
  • 정밀한 계산이 필요할 경우 다른 도구를 따로 사용한다.

0개의 댓글