프론트엔드/javascript

부동소수점 오류 현상

느바 2024. 3. 8. 17:50
반응형

부동소수점 오류 현상

const a = 0.1;
const b = 0.2;
console.log(a+b); // 0.30000000000000004

 

소수점이 있는 실수를 이진수로 표현할 때
이진수로 표현하지 못하는 소수가 발생하여
컴퓨터는 가장 근사치의 값이 저장된다.

고정 소수점 또는 부동 소수점 을 사용해 이를 해결한다.
부동 소수점을 표현하는 방식으로
일반적으로 IEEE에서 표준으로 제안한 방식을 사용한다.( 부호비트(1bit), 지수비트(8bit), 가수비트(23bit) )

하지만 부동 소수점 계산에는
정밀도가 손실되고,
반올림으로 오차가 생기는 오류가 발생한다.

부동 소수점 오류를 해결하기 위한 방법으로
- toFixed() 사용
- Math 객체의 메서드 사용
- 기타 라이브러리 사용 (BigNumber.js, ...)