Number.isSafeInteger()
Number.isSafeInteger()
λ©μλλ μ λ¬λ κ°μ΄ μμ ν μ μ«κ°μΈμ§ νμΈνλ€.
function warn(x) {
if(Number.isSafeInteger(x)) return 'Precision safe.';
return 'Precision may be lost!';
}
// pow nμ κ³±
warn(Math.pow(2, 53)); // "Precision may be lost!"
warn(Math.pow(2, 53) - 1); // "Precision safe."
μμ ν μ μ«κ°
IEEE-754 λ°°μλμ ννλ‘ μ νν ννλ μ μλ μ
IEEE-754 ννμ λ§κ² λ°μ¬λ¦Όνλ λ€λ₯Έ μ μμ κ²°κ³Όκ° μλ IEEE-754 νν
2^53 - 1
μ μμ ν μ μ«κ°μ΄λ€. μ΄ μ μλ μ ννκ² ννν μ μμΌλ©° IEEE-754 λ°μ¬λ¦Ό λͺ¨λμμ λ€λ₯Έ μ μ«κ°μ΄ μ΄ κ°μ λ°μ¬λ¦Όνμ§ μλλ€. λ°λ©΄ 2^53
μ μμ νμ§ μμ μ μμ΄λ€. μ΄ μ μλ μ νν IEEE-754λ‘ ννλ μ μμ§λ§, μ ννκ² ννλμ§λ§, IEEE-754μμλ ννν μ μμΌλ©° κ°κΉμ΄ μλ‘ λ°μ¬λ¦Όνλ κ²κ³Ό 0μΌλ‘ λ°μ¬λ¦Όνλ κ²μΌλ‘ 2^53 λ°μ¬λ¦Όνλ€.
IEEE-754 IEEEμμ κ°λ°ν μ»΄ν¨ν°μμ λΆλμμμ μ νννλ κ°μ₯ λ리 μ°μ΄λ νμ€μ΄λ€. Β±0 λ±μ μμ 무ν, NaN λ±μ κΈ°νΈλ₯Ό νμνλ λ²κ³Ό μ΄λ¬ν μμ λν μ°μ°μ μ μνκ³ μλ€. κ°μ₯ μ΅μ λ²μ μΈ IEEE 754-2019κ° 2019λ 6μμ λ°°νλμλ€.
μ΅λ μ λ°λλ‘ μ΅λ 9μ‘° λ¬λ¬λ³΄λ€ ν¬κ±°λ μμ κ°μ μ²λ¦¬νλ €λ©΄ Arbitrary-precision arithmetic λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μΌνλ€.
νλ‘κ·Έλλ¨Έ λͺ¨λκ° μμμΌ νλ λΆλ μμμ μ μ°Έκ³ νμ
ν° μ μλ BigInt
λ₯Ό μ¬μ©νμ
Syntax
Number.isSafeInteger(testValue)
Parameters
testValue μμ ν μ μ«κ°μΈμ§ νλ³νλ€.
Return value
μ£Όμ΄μ§ κ°μ΄ μμ ν μ μ«κ°μΈμ§λ₯Ό λνλ΄λ Boolean
κ°μ΄λ€.
Examples
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger('3'); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
Polyfill
Number.isSafeInteger = Number.isSageInteger || function (value) {
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
}
Browser compatibility
IE μ§μμλ¨
Last updated
Was this helpful?