νμ€ λΉνΈμΈ κ°μ²΄μΈ
Number
λ μμ νμ μΈ μ«μλ₯Ό λ€λ£° λ μ μ©ν νλ‘νΌν°μ λ©μλλ₯Ό μ 곡νλ€.
νμ€ λΉνΈμΈ κ°μ²΄μΈ
Number
κ°μ²΄λ μμ±μ ν¨μ κ°μ²΄λ€. λ°λΌμnew
μ°μ°μμ ν¨κ» νΈμΆνμ¬Number
μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
μΈμλ₯Ό μ λ¬νμ§ μκ³ νΈμΆνλ©΄
[[NumberData]]
λ΄λΆ μ¬λ‘―μ 0μ ν λΉνNumber λνΌ κ°μ²΄
λ₯Ό μμ±.
μΈμλ‘ μ«μλ₯Ό μ λ¬νλ©΄[[NumberData]]
λ΄λΆ μ¬λ‘―μ μΈμλ₯Ό ν λΉν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('0'); // -> 0
Number('-1'); // -> -1
Number('10.53'); // -> 10.53
// λΆλ¦¬μΈ νμ
=> μ«μ νμ
Number(true); // -> 1
Number(false); // -> 0
ES6μμ λμ λ
Number.EPSILON
μ1
κ³Ό1
λ³΄λ€ ν° μ«μ μ€μμ κ°μ₯ μμ μ«μμμ μ°¨μ΄μ κ°λ€.
Number.EPSILON
μ λΆλμμμ μΌλ‘ μΈν΄ λ°μνλ μ€μ°¨λ₯Ό ν΄κ²°νκΈ° μ΄ν΄ μ¬μ©νλ€.
0.1 + 0.2; // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false
function isEaual(a, b){
// aμ bλ₯Ό λΊ κ°μ μ λκ°μ΄ Number.EPSILONλ³΄λ€ μμΌλ©΄ κ°μ μλ‘ μΈμ νλ€.
return Math.abs(a - b) < Number.EPSILON
}
isEqual(0.1 + 0.2, 0.3); // true
0.1 + 0.2; // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false
μ°λ¦¬κ° λ³΄ν΅ κ³μ° ν λ μ¬μ©νλ 10μ§λ²κ³Ό λ¬λ¦¬ μ»΄ν¨ν°λ 2μ§λ²μΌλ‘ λμνλλ°, λͺλͺ μμλ 10μ§λ²μμ 2μ§λ²μΌλ‘ λ³ννλ κ³Όμ μμ 무ν μμκ° λμ΄λ²λ¦°λ€.
μ μ₯곡κ°μ νκ³κ° μλ μ»΄ν¨ν°λ 무ν μμλ₯Ό μ ν μμλ‘ λ°κΎΈκ² λλλ°,
μ΄ κ³Όμ μμ λ―ΈμΈν μ€μ°¨κ° λ°μν΄μ μ€λ₯κ° λ°μν κ²μ΄λ€. (μ λ°λ λ¬Έμ )
Number.MAX_VALUE
λ μλ°μ€ν¬λ¦½νΈμμ ννν μ μλ κ°μ₯ ν° μμ κ°(1.7976931348623157e+308
)μ΄λ€.Number.MAX_VALUE
λ³΄λ€ ν° μ«μλInfinity
λ€.
Number.MAX_VALUE; // -> 1.7976931348623157e+308
Infinity > Number.MAX_VALUE; // -> true
Number.MIN_VALUE
λ μλ°μ€ν¬λ¦½νΈμμ ννν μ μλ κ°μ₯ μμ μμ κ°(5e-324
)μ΄λ€.Number.MIN_VALUE
λ³΄λ€ μμ μ«μλ 0μ΄λ€.
Number.MIN_VALUE; // 5e-324
Number.MIN_VALUE > 0; // true
Number.MAX_SAFE_INTEGER
λ μλ°μ€ν¬λ¦½νΈμμ μμ νκ² ννν μ μλ κ°μ₯ ν° μ μκ°(9007199254740991
)
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_SAFE_INTEGER
λ μλ°μ€ν¬λ¦½ν μ μμ νκ² ννν μ μλ κ°μ₯ μμ μ μ«κ°(-9007199254740991
)μ΄λ€.
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
ES6μμ λμ λ
Number.isFinite μ μ λ©μλ
λ μΈμλ‘ μ λ¬λ μ«μκ°μ΄ μ μμ μΈ μ νμ, μ¦Infinity
λλ-Infinity
κ° μλμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€.
// μΈμκ° μ μμ μΈ μ νμμ΄λ©΄ trueλ₯Ό λ°ννλ€.
Number.isFitite(0); // -> true
Number.isFitite(Number.MAX_VALUE); // -> true
Number.isFitite(Number.MIN_VALUE); // -> true
// μΈμκ° λ¬΄νμμ΄λ©΄ falseλ₯Ό λ°ννλ€.
Number.isFitite(Infinity); // -> false
Number.isFitite(-Infinity); // -> false
λ§μ½ μΈμκ°
NaN
μ΄λ©΄ μΈμ λfalse
λ₯Ό λ°ννλ€.
Number.isFitite(NaN); // -> false
// Number.isFiniteλ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννμ§ μλλ€.
Number.isFinite(null); // -> false
// isFiniteλ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννλ€. nullμ 0μΌλ‘ μ묡μ νμ
λ³νλλ€.
isFinite(null); // -> true
ES6μμ λμ λ
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
ES6μμ λμ λ
Number.isNaN μ μ λ©μλ
λ μΈμλ‘ μ λ¬λ μ«μκ°μ΄NaN
μΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€.
// μΈμκ° NaNμ΄λ©΄ trueλ₯Ό λ°ννλ€.
Number.isNaN(NaN); // -> true
// isNaNμ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ
λ³ννλ€. undefinedλ NaNμΌλ‘ μ묡μ νμ
λ³νλλ€.
isNaN(undefined); // -> true
ES6μμ λμ λ
Number.isSafeInterger μ μ λ©μλ
λ μΈμλ‘ μ λ¬λ μ«μκ°μ΄ μμ ν μ μμΈμ§ κ²μ¬νμ¬ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€. κ²μ¬μ μ μΈμλ₯Ό μ«μλ‘ μ묡μ νμ λ³ννμ§ μλλ€.
// 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 λ©μλ
λ μ«μλ₯Ό μ§μ νκΈ°λ²μΌλ‘ λ³νΈλνμ¬ λ¬Έμμ΄λ‘ λ°ννλ€.
(77.1234).toExponential(); // -> "7.71234e+1"
(77.1234).toExponential(4); // -> "7.7123e+1"
(77.1234).toExponential(2); // -> "7.71e+1"
77.toExponential(); // -> SyntaxError: Invalid or unexpected token
toFixed λ©μλ
λ μ«μλ₯Ό λ°μ¬λ¦Όνμ¬ λ¬Έμμ΄λ‘ λ³ννλ€. λ°μ¬λ¦Όνλ μμμ μ΄ν μλ¦Ώμλ₯Ό λνλ΄λ0 ~ 20
μ¬μμ μ μκ°μ μΈμλ‘ μ λ¬ν μ μλ€. μΈμλ₯Ό μλ΅νλ©΄ κΈ°λ³Έκ°0
μ΄ μ§μ λλ€.
// μμμ μ΄ν λ°μ¬λ¦Ό. μΈμλ₯Ό μλ΅νλ©΄ κΈ°λ³Έκ° 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"