νμ€ λΉνΈμΈ κ°μ²΄μΈ Number κ°μ²΄λ μμ±μ ν¨μ κ°μ²΄λ€. λ°λΌμ new μ°μ°μμ ν¨κ» νΈμΆνμ¬ Number μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
Number μμ±μ ν¨μμ μΈμλ‘ μ«μλ₯Ό μ λ¬νλ©΄μ newμ°μ°μμ ν¨κ» νΈμΆνλ©΄ [[NumberData]] λ΄λΆ μ¬λ‘―μ μΈμλ‘ μ λ¬λ°μ μ«μλ₯Ό ν λΉν Number λνΌ κ°μ²΄λ₯Ό μμ±νλ€. Number μμ±μ ν¨μμ μΈμλ‘ μ«μκ° μλ κ°μ μ λ¬νλ©΄ μΈμλ₯Ό μ«μλ‘ κ°μ λ³ννλ€.
const numObj = new Number(10);
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
let numObj = new Number('10');
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
numObj = new Number('Hello');
console.log(numObj); // Number {[[PrimitiveValue]]: NaN}
Number.EPSILONμ 1κ³Ό 1λ³΄λ€ ν° μ«μ μ€μμ κ°μ₯ μμ μ«μμμ μ°¨μ΄μ κ°λ€. Number.EPSILONμ λΆλμμμ μΌλ‘ μΈν΄ λ°μνλ μ€μ°¨λ₯Ό ν΄κ²°νκΈ° μν΄ μ¬μ©νλ€.
function isEqual(a, b){
// aμ bλ₯Ό λΊ κ°μ μ λκ°μ΄ Number.EPSILONλ³΄λ€ μμΌλ©΄ κ°μ μλ‘ μΈμ νλ€.
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // -> true
Number.MAX_VALUEλ μμ€μμ ννν μ μλ κ°μ₯ ν° μμ κ°μ΄λ€. Number.MAX_VALUEλ³΄λ€ ν° μ«μλ Infinityλ€.
Number.MAX_VALUE; // -> 1.7976931348623157e+308
Infinity > Number.MAX_VALUE; // -> true
Number.MIN_VALUEλ μμ€μμ ννν μ μλ κ°μ₯ ν° μμ κ°μ΄λ€. Number.MIN_VALUEλ³΄λ€ ν° μ«μλ 0μ΄λ€.
Number.MIN_VALUE; // -> 5e-324
Number.MIN_VALUE > 0; // -> true
Number.MAX_SAFE_INTEGERλ μμ€μμ μμ νκ² ννν μ μλ κ°μ₯ ν° μ μκ°μ΄λ€.
Number.MAX_SAFE_INTEGER; // -> 9007199254740991
Number.MIN_SAFE_INTEGERλ μμ€μμ μμ νκ² ννν μ μλ κ°μ₯ μμ μ μκ°μ΄λ€.
Number.MIN_SAFE_INTEGER; // -> -9007199254740991
Number.POSITIVE_INFINITYλ μμ 무νλλ₯Ό λνλ΄λ μ«μκ° Infinityμ κ°λ€.
Number.POSITIVE_INFINITY; // -> Infinity
Number.NEGATIVE_INFINITYλ μμ 무νλλ₯Ό λνλ΄λ μ«μκ° -Infinityμ κ°λ€.
Number.NEGATIVE_INFINITY; // -> -Infinity
Number.NaNμ μ«μκ° μλμ λνλ΄λ μ«μκ°μ΄λ€.
Number.NaN; // -> NaN
Number.isFinite μ μ λ©μλλ μΈμλ‘ μ λ¬λ μ«μ κ°μ΄ μ μμ μΈ μ νμμΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€. λ§μ½ μΈμκ° NaNμ΄λΌλ©΄ μΈμ λ falseλ₯Ό λ°ννλ€.
// μΈμκ° μ μμ μΈ μ νμμ΄λ©΄ trueλ₯Ό λ°ννλ€.
Number.isFinite(0); // -> true
Number.isFinite(Number.MAX_VALUE); // -> true
Number.isFinite(Number.MIN_VALUE); // -> true
// μΈμκ° λ¬΄νμμ΄λ©΄ falseλ₯Ό λ°ννλ€.
Number.isFinite(Infinity); // -> false
Number.isFinite(-Infinity); // -> false
Number.isFinite(NaN); // -> false
λΉνΈμΈ μ μν¨μ isFiniteλ μ λ¬ λ°μ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ λ³ννμ¬ κ²μ¬λ₯Ό μννμ§λ§ Number.isFiniteλ μ λ¬ λ°μ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ λ³ν νμ§ μλλ€.
// Number.isFiniteλ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isFinite(null); // -> false
// isFiniteλ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννλ€. nullμ 0μΌλ‘ μ묡μ νμ
λ³νλλ€.
isFinite(null); // -> true
Number.isInteger μ μ λ©μλλ μΈμλ‘ μ λ¬λ μ«μ κ°μ΄ μ μμΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€. κ²μ¬νκΈ° μ μ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ λ³ννμ§ μλλ€.
// μΈμκ° μ μμ΄λ©΄ trueλ₯Ό λ°ννλ€.
Number.isInteger(0) // -> true
Number.isInteger(123) // -> true
Number.isInteger(-123) // -> true
// 0.5λ μ μκ° μλλ€.
Number.isInteger(0.5) // -> false
// '123'μ μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isInteger('123') // -> false
// falseλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isInteger(false) // -> false
// Infinity/-Infinityλ μ μκ° μλλ€.
Number.isInteger(Infinity) // -> false
Number.isInteger(-Infinity) // -> false
Number.isNaN μ μ λ©μλλ μΈμλ‘ μ λ¬λ μ«μκ°μ΄ NaNμΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€. κ²μ¬νκΈ° μ μ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ λ³ννμ§ μλλ€.
// μΈμκ° NaNμ΄λ©΄ trueλ₯Ό λ°ννλ€.
Number.isNaN(NaN); // -> true
// Number.isNaNμ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isNaN(undefined); // -> false
// isFiniteλ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννλ€. undefinedλ NaNμΌλ‘ μ묡μ νμ
λ³νλλ€.
isNaN(undefined); // -> true
Number.isSafeInteger μ μ λ©μλλ μΈμλ‘ μ λ¬λ μ«μκ°μ΄ μμ ν μ μμΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€.
// 0μ μμ ν μ μμ΄λ€.
Number.isSafeInteger(0); // -> true
// 1000000000000000μ μμ ν μ μμ΄λ€.
Number.isSafeInteger(1000000000000000); // -> true
// 10000000000000001μ μμ νμ§ μλ€.
Number.isSafeInteger(10000000000000001); // -> false
// 0.5μ μ μκ° μλλ€.
Number.isSafeInteger(0.5); // -> false
// '123'μ μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isSafeInteger('123'); // -> false
// falseλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isSafeInteger(false); // -> false
// Infinity/-Infinityλ μ μκ° μλλ€.
Number.isSafeInteger(Infinity); // -> false
toExponential λ©μλλ μ«μλ₯Ό μ§μ νκΈ°λ²μΌλ‘ λ³ννμ¬ λ¬Έμμ΄μ λ°ννλ€. μ«μ 리ν°λ΄κ³Ό ν¨κ» Number νλ‘ν νμ λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ¬κ° λ°μνλ€. μ«μ λ€μ .μ μλ―Έκ° λͺ¨νΈνκΈ° λλ¬Έμ κ·Έλ£Ήμ°μ°μλ₯Ό μ¬μ©ν κ²μ κΆμ₯νλ€.
(77.1234).toExponential(); // -> "7.71234e+1"
(77.1234).toExponential(4); // -> "7.7123e+1"
(77.1234).toExponential(2); // -> "7.71e+1"
toFixed λ©μλλ μ«μλ₯Ό λ°μ¬λ¦Όνμ¬ λ¬Έμμ΄λ‘ λ°ννλ€.
// μμμ μ΄ν λ°μ¬λ¦Ό. μΈμλ₯Ό μλ΅νλ©΄ κΈ°λ³Έκ° 0μ΄ μ§μ λλ€.
(12345.6789).toFixed(); // -> "12346"
// μμμ μ΄ν 1μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toFixed(1); // -> "12345.7"
// μμμ μ΄ν 2μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toFixed(2); // -> "12345.68"
// μμμ μ΄ν 3μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toFixed(3); // -> "12345.679"
toPrecision λ©μλλ μΈμλ‘ μ λ¬λ°μ μ 체 μλ¦ΏμκΉμ§ μ ν¨νλλ‘ λλ¨Έμ§ μλ¦Ώμλ₯Ό λ°μ¬λ¦Όνμ¬ λ¬Έμμ΄λ‘ λ°ννλ€.
// μ 체 μ리μ μ ν¨. μΈμλ₯Ό μ λ¬νμ§ μμΌλ©΄ κΈ°λ³Έκ° 0μ΄ μ λ¬λλ€.
(12345.6789).toPrecision(); // -> "12345.6789"
// μ 체 1μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toPrecision(1); // -> "1e+4"
// μ 체 2μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toPrecision(2); // -> "1.2e+4"
// μ 체 6μ리μ μ ν¨, λλ¨Έμ§ λ°μ¬λ¦Ό
(12345.6789).toPrecision(6); // -> "12345.7"
toString λ©μλλ μ«μλ₯Ό λ¬Έμμ΄λ‘ λ³ννμ¬ λ°ννλ€.
// μΈμλ₯Ό μλ΅νλ©΄ 10μ§μ λ¬Έμμ΄μ λ°ννλ€.
(10).toString(); // -> "10"
// 2μ§μ λ¬Έμμ΄μ λ°ννλ€.
(16).toString(2); // -> "10000"
// 8μ§μ λ¬Έμμ΄μ λ°ννλ€.
(16).toString(8); // -> "20"
// 16μ§μ λ¬Έμμ΄μ λ°ννλ€.
(16).toString(16); // -> "10"