๊ธฐํƒ€

[ JS ] 0.1 + 0.2 == 0.3 ์€ ์™œ false์ธ๊ฐ€?

PYT 2022. 9. 13. 15:19
๋ฐ˜์‘ํ˜•

์•Œ์ˆ˜์—†๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ..

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

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹ค์ˆ˜ ๊ณ„์‚ฐ ์˜ค๋ฅ˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ 0.1๊ณผ 0.2๋ฅผ ๋”ํ•˜๋ฉด 0.3์ด ์•„๋‹Œ 0.30000000000000004๊ฐ€ ๋‚˜์˜จ๋‹ค. ๋„๋Œ€์ฒด ์™œ ์ด๋Ÿด๊นŒ?

medium.com

 

 

๋ฐ˜์‘ํ˜•