Number.EPSILON

Number.EPSILON ์€ JavaScript์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ ์ด๋‹ค. Number ํ˜•์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋Š” 1๊ณผ 1๋ณด๋‹ค ํฐ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์˜ ์ฐจ์ด๋‹ค.

์ด ์ •์  ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•˜์—ฌ Number ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค -> ์™œ๋ƒํ•˜๋ฉด ์›์‹œ ํƒ€์ž…์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ ์›์‹œ ํƒ€์ž…๊ณผ ์—ฐ๊ด€๋œ wrapper ๊ฐ์ฒด๋กœ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

const result = Math.abs(0.2 - 0.3 + 0.1);

result; // 2.7755575615628914e-17

result < Number.EPSILON; 
// 2.7755575615628914e-17 < 2.2204460492503130808472633361816E-16 true

๋ถ€๋™์†Œ์ˆ˜์  ๋˜๋Š” ๋– ๋Œ์ด ์†Œ์ˆ˜์ 

์‹ค์ˆ˜๋ฅผ ์ปดํ“จํ„ฐ์ƒ์—์„œ ๊ทผ์‚ฌํ•˜์—ฌ ํ‘œํ˜„ํ•  ๋•Œ ์†Œ์ˆ˜์ ์˜ ์œ„์น˜๋ฅผ ๊ณ ์ •ํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ ์€ ๊ฒƒ

๋ถ€๋™์†Œ์ˆ˜์  ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋น„๊ต๋Š” ์ •ํ™•ํ•œ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

https://perfectacle.github.io/2017/08/04/ES6-EPSILON/ ๐Ÿ˜ญ

Description

EPSILON ์†์„ฑ์€ 2.2204460492503130808472633361816E-16, or 2-52 ๊ฐ€๊นŒ์šด ๊ฐ’์ด๋‹ค.

Examples

// Math.abs๋Š” ์ ˆ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ์ฆ‰ a์™€ b์˜ ์ฐจ์ด๊ฐ€ JavaScript์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์ธ Number.EPSILON๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ฐ™์€ ์ˆ˜๋กœ ์ธ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON;
// 5.551115123125783e-17 < 2.2204460492503130808472633361816E-16 true

๋ถ€๋™์†Œ์ˆ˜์  ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋น„๊ต๋Š” ์ •ํ™•ํ•œ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

์ •์ˆ˜๋Š” 2์ง„๋ฒ•์œผ๋กœ ์˜ค์ฐจ์—†์ด ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ํ‘œ์ค€์ธ IEEE 754์€ 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜์‹œ ๋ฌดํ•œ์†Œ์ˆ˜๊ฐ€ ๋˜์–ด ๋ฏธ์„ธํ•œ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ์  ํ•œ๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ๋ถ€๋™์†Œ์ˆ˜์ ์˜ ๋น„๊ต๋Š” Number.EPSILON์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๊ต ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

https://poiemaweb.com/js-number#21-numberepsilon-es6

https://stackoverflow.com/questions/51019475/what-are-the-possible-usage-scenarios-for-number-epsilon

Last updated

Was this helpful?