소수 비교

들어가기 전

부동소수점의 개념을 알고 있어야 한다.

이슈

const a = 0.2
const b = 0.1

const c = a + b

console.log(c === 0.3, c) // false, 0.30000000000000004

해결 방법

Number.EPSILON

Number 형으로 표현될 수 있는 1과 1보다 큰 값중에서 가장 작은 값의 차

console.log(Number.EPSILON) // 2.220446049250313e-16
console.log(Math.abs(c - 0.3)) // 5.551115123125783e-17
console.log(Math.abs(c - 0.3) < Number.EPSILON) // true

Reference

https://shin-ae.github.io/2017/09/04/JS-Compare-Numbers/