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์ ์ฌ์ฉํ์ฌ ๋น๊ต ๊ธฐ๋ฅ์ ๊ฐ๋ ํจ์๋ฅผ ์์ฑํ์ฌ์ผ ํ๋ค.
Last updated
Was this helpful?