πŸ“… TIL #15

0.1 + 0.2 === 0.3


0.1 + 0.2 === 0.3

0.1 + 0.2 === 0.3 // false 에 λŒ€ν•΄μ„œ λ‚˜λŠ” 였늘 κΉ¨λ‹«κ²Œ λ˜μ—ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜λ§Œ ν’€κ³  μžλ°”μŠ€ν¬λ¦½νŠΈμ— λŒ€ν•΄ 더 깊게 κ³΅λΆ€ν•˜μ§€ μ•Šμ•˜λ˜ 탓에 였늘 깨달은 것 κ°™λ‹€.

그러면 0.1 + 0.2 === 0.3 은 μ™œ false 일까?

console.loh(0.1 + 0.3); // 0.4
console.log(0.1 + 0.2); // 0.30000000000000004;


μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” μ‹€μˆ˜λ₯Ό λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•˜λŠ”λ° λΆ€λ™μ†Œμˆ˜μ μ€ μ‹€μˆ˜λ₯Ό μ •ν™•νžˆ ν‘œν˜„ν•  수 μ—†λŠ” λ¬Έμ œκ°€ μžˆλ‹€. κ·Έλž˜μ„œ μ •ν™•νžˆ 0.3이 μ•„λ‹Œ 0.30000000000000004κ°€ λ‚˜μ˜¨λ‹€.

0.30000000000000004 λŠ” 0.3 을 ν‘œν˜„ν•˜κΈ° μœ„ν•œ 근삿값이닀. μ΄λ ‡κ²Œ μ‹€μˆ˜λ₯Ό κ·Όμ‚Ώκ°’μœΌλ‘œ ν‘œν˜„ν•˜λ©΄μ„œ λ°œμƒν•˜λŠ” 문제λ₯Ό λΆ€λ™μ†Œμˆ˜μ  반올림 였차(rounding error)라고 ν•œλ‹€.


그러면 true 값이 λ‚˜μ˜€κ²Œ ν•˜λ €λ©΄ ? toFixed() ν•¨μˆ˜λ₯Ό 써주면 λœλ‹€. λ§€κ°œλ³€μˆ˜λ‘œ 받은 숫자만큼의 μ†Œμˆ˜μžλ¦¬κΉŒμ§€ λ°˜μ˜¬λ¦Όν•΄μ„œ 좜λ ₯ν•œλ‹€.

(0.1 + 0.2).toFixed(1); // 0.3

μ£Όλ§λ™μ•ˆ 이 λ‚΄μš©μ— λŒ€ν•΄μ„œ μ°Ύμ•„λ³΄λ©΄μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈμ— λŒ€ν•΄μ„œ 쑰금 더 μ•Œμ•„κ°€λŠ” 계기가 된 것 κ°™λ‹€! λΆ€λ™μ†Œμˆ˜μ μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³  λΈ”λ‘œκΉ…μ„ 해보렀고 ν–ˆμ§€λ§Œ, 아직은 더 곡뢀λ₯Ό 해봐야할 것 κ°™λ‹€!



πŸ‘Š λ‚΄μΌμ˜ TIW(today I Will)

λ°°μ—΄(array)