[ JS ] 0.1 + 0.2 == 0.3 ์ ์ false์ธ๊ฐ?
์์์๋ ์๋ฐ์คํฌ๋ฆฝํธ..
0.1 + 0.2 == 0.3 ์ด false๋ก ๋์จ๋ค.
0.1 + 0.2๋ฅผ ์ณ๋ณด๋ฉด ๊ฐ์ด 0.30000000000000004๋ก ๋์ค๋๋ฐ ์ ์ด๋ฐ๊ฑธ๊น?
๊ฐ๋จํ ๋งํด์
๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํด์ผํ๋๋ฐ
์์์ ์ ์ ์ฅ๋ฐฉ์์ด ์ข๋ค๋ฆ
์ ์ 1์ด๋ฉด
๋ฉ๋ชจ๋ฆฌ์๋ 1 ํ์นธ ๋ค์ด๊ฐ๋๋ฐ
์์์ ์
์์ด ์ ์๋ผ๋๊ฐ๊ณผ ์์๋ผ๋๊ฐ๊ณผ ๋๋จธ์ง๊ฐ์ ๋ฃ์ด์ค์ผํ๋๋ฐ
์๋ง์ ์นธ์ ์ฌ์ฉํ๋๋ฐ
๊ทธ ์นธ์ ์ฌ์ฉํ ์ ์๋ ์ ํ์ด ์์
๊ทธ ์ ํ์ ๊ฑธ๋ฆฌ๋ฉด์
์์น๊ฐ ๋ค๋ฅด๊ฒ ๋์ค๋๊ฒ
๊ทผ๋ฐ ๊ทธ ์์ ์๋ ์์ญ๊ฐ์ 0 ๋๋ถ๋ถ์ด ํ๋ฆฌ๊ธฐ๋๋ฌธ์
๋์น๋ชป์ฑ ^_^!
๊ทธ๋์ ํ๋ณํ์ด๋ผ๋๊ฑธ ์ฌ์ฉํด์
์๋ผ์ฐ๊ธฐ ํด์ค์ผ๋จ ^_^!
๊ทธ๋์ ์๋ฐ์์๋ ์ด ๋ฌธ์ ๋๋ฌธ์
๋๋ธ์ด๋ผ๋ ์๋ฃํ์ด ์กด์ฌ ^_^!
์คํฌ๋ฆฝํธ๋ ๊ทธ๋ด๊ฑฐ์์ ^_^!
์ฐธ๊ณ
์์ธ์ ๋ฐ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ซ์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ์๋ค. MDN ์น ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ซ์๋ฅผ ๋ถ๋์์์ (double-precision 64-bit binary format IEEE 754)์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
๊ทธ๋ฌ๋ฉด ์ฐ์ 10์ง์ ๊ฐ์ 2์ง์๋ก ๋ณํํ๊ฒ ๋๋๋ฐ, 0.1์ด๋ 0.2 ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฌดํ ์์๊ฐ ๋ฐ์ํ๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ถํธ๋นํธ(+,-)๊ฐ 1bit, ์ง์๋ถ(์ ์) 11bit, ๊ฐ์๋ถ(์์)๊ฐ 52bit์์ผ๋ก ์ด ์ด์ ๋์ด๊ฐ๋ ๋ถ๋ถ์ ๋ฐ์ฌ๋ฆผ ์ฒ๋ฆฌ ํ์ฌ ์๋ผ๋ด๊ฒ ๋๋ค. ๊ทธ๋์ ํด๋น ๊ฐ์ ์ ํํ ๊ฐ์ด ์๋ ๊ทผ์ฌ ๊ฐ์ผ๋ก ์ ์ฅ์ด ๋๋ค.
double-precision 64-bit binary format IEEE 754