결제 화면에서 금액 합산하는 로직 짜다가 이상한 걸 발견했어요. 분명히 더하면 0.3이어야 하는데 자꾸 값이 안 맞더라고요.
console.log(0.1 + 0.2);
// 0.30000000000000004
console.log(0.1 + 0.2 === 0.3);
// false
처음엔 제 코드에 버그가 있는 줄 알고 며칠 삽질했는데 콘솔에 직접 쳐봐도 이렇게 나오네요. 금액이 딱 떨어지는 값들인데도 합계가 미세하게 틀어져서 결제 검증이 자꾸 실패했어요.
이게 자바스크립트만 그런 건가요? 그리고 두 값이 같은지 비교할 때는 어떻게 해야 하나요? Number.EPSILON 같은 걸 쓰라는 글을 얼핏 봤는데 정확히 어떻게 쓰는 건지 궁금합니다.