JavaScriptの学習・参考リファレンス/ドキュメント

JavaScript、ECMAScriptの学習と参考メモ 入門~初心者~中級者~上級者を目指して

Number 数値

数値を扱うプリミティブ値numberのラッパーオブジェクトNumberについての説明です。

基本的な使い方

console.log(Number('12345')); // 12346
console.log(Number('12345.67')); // 12345.67
console.log(Number('1.234e20')); // 123400000000000000000
console.log(Number('1.234e-20')); // 1.234e-20
console.log(Number('0xFF')); // 255
console.log(Number('0o77')); // 63
console.log(Number('0b10101')); // 21

console.log(Number(123456789n)); // 123456789

console.log(Number(null)); // 0

console.log(Number(Infinity)); // Infinity
console.log(Number(-Infinity)); // -Infinity
console.log(Number('Infinity')); // Infinity
console.log(Number('-Infinity')); // -Infinity

console.log(Number(undefined)); // NaN
console.log(Number(NaN)); // NaN
console.log(Number('abc')); // Nan

整数値判定

console.log(Number.isInteger(10)); // true
console.log(Number.isInteger(0)); // true
console.log(Number.isInteger(-10)); // true
console.log(Number.isInteger(0.123)); // false
console.log(Number.isInteger('10')); //  false

整数値変換

グローバル関数parseIntと同様。Numberへのモジュール化。

console.log(Number.parseInt('123')); // 123
console.log(Number.parseInt('123.45')); // 123
console.log(Number.parseInt('a')); // NaN

小数点数値変換

グローバル関数parseFloatと同様。Numberへのモジュール化。

console.log(Numbner.parseFloat('1.23')); // 1.23
console.log(Numbner.parseFloat('abc')); // NaN

数値の文字列フォーマット表現

// 各進数での表現
console.log(new Number(255).toString()); // "255" 10進数
console.log(new Number(255).toString(2)); // "11111111" 2進数
console.log(new Number(255).toString(16)); // "ff" 16進数

// 有効数字を指定した表現
console.log(new Number(12.34).toPrecision()); // 1.23
console.log(new Number(12.34).toPrecision(1)); // 1e+1
console.log(new Number(12.34).toPrecision(2)); // 12
console.log(new Number(12.34).toPrecision(3)); // 12.3
console.log(new Number(12.34).toPrecision(4)); // 12.34
console.log(new Number(12.34).toPrecision(5)); // 12.340

// 固定小数点での表現
console.log(new Number(12.34).toFixed()); // 12
console.log(new Number(12.34).toFixed(1)); // 12.3
console.log(new Number(12.34).toFixed(2)); // 12.34
console.log(new Number(12.34).toFixed(3)); // 12.340
console.log(new Number(1.23e+4).toFixed()); // "12300"
console.log(new Number(1.23e+4).toFixed(1)); // "12300.0"
console.log(new Number(1.23e-2).toFixed()); // "0"
console.log(new Number(1.23e-2).toFixed(1)); // "0.0"
console.log(new Number(1.23e-2).toFixed(2)); // "0.01"
console.log(new Number(1.23e-2).toFixed(3)); // "0.012"
console.log(new Number(1.23e-2).toFixed(4)); // "0.0123"
console.log(new Number(1.23e-2).toFixed(5)); // "0.01230"

// 指数表記
console.log(new Number(123.4).toExponential()); // "1.234e+2"
console.log(new Number(123.4).toExponential(1)); // "1.2e+2"
console.log(new Number(123.4).toExponential(2)); // "1.23e+2"
console.log(new Number(123.4).toExponential(3)); // "1.234e+2"
console.log(new Number(123.4).toExponential(4)); // "1.2340e+2"

// ロケールに応じた表現 [1]
console.log(new Number(12345.67).toLocaleString()); // "12,345.67"
console.log(new Number(12345.67).toLocaleString('ja-JP')); // "12,345.67"
console.log(new Number(12345.67).toLocaleString('zh-Hans-CN-u-nu-hanidec')); //"一二,三四五.六七"
console.log(new Number(12345.67).toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })); // "¥12,346"
console.log(new Number(12345.67).toLocaleString('ja-JP', { style: 'decimal' })); // "12,345.67"
console.log(new Number(12345.67).toLocaleString('ja-JP', { style: 'percent' })); // "1,234,567%"

Numberのプロパティ

非数 Not A Number

console.log(Number.NaN);
//console.log(NaN);

比較可能な最大の整数と最小の整数

console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
console.log(Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2); // true !!!
console.log(Number.MAX_SAFE_INTEGER - 1 === Number.MAX_SAFE_INTEGER - 2); // false

console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
console.log(Number.MIN_SAFE_INTEGER + 1 === Number.MIN_SAFE_INTEGER + 2); // false
console.log(Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2); // true !!!

正の値の最大と最小

console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324

Numberのメソッド

対象の値がNaNであるかの判定

console.log(Number.NaN === Number.NaN); // ===や==では Not A Numberであるかは判定できない

console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(Number.NaN)); // true
console.log(Number.isNaN(Infinity - Infinity)); // true

console.log(Number.isNaN('a')); // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN({})); // false
/*
console.log(isNaN('a')); // true
console.log(isNaN(undefined)); // true
console.log(isNaN({})); // true
*/

有限の数値であるかの判定

console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite('123')); // false
console.log(Number.isFinite(Number.MAX_VALUE)); // true
console.log(Number.isFinite(123)); // true
作成日 : 2020年06月15日