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?