数値の表現

2進数表記の新しい書き方:接頭辞 0b または 0B。

console.log(0b11 === 3); // true
console.log(0B11 === 3); // true

8進数表記の新しい書き方:接頭辞 0o または 0O。

console.log(0o11 === 9); // true
console.log(0O11 === 9); // true

定数

Number.EPSILON

Number.EPSILON プロパティは、1 と 1 より大きい最小の浮動小数点数との差を表します。

その値は 2.2204460492503130808472633361816E-16、または 2^-52 にほぼ等しい。

数値が誤差範囲内かどうかをテストする:

0.1 + 0.2 === 0.3; // false
// 在误差范围内即视为相等
equal = (Math.abs(0.1 - 0.3 + 0.2) < Number.EPSILON); // true

プロパティ属性

writable:false
enumerable:false
configurable:false

最大/最小安全整数

安全整数

安全整数とは、JavaScript で正確に表現できる整数のことです。安全整数の範囲は 2 の -53 乗から 2 の 53 乗の間(両端を含まない)で、この範囲を超える整数は正確に表現できません。

最大安全整数

安全整数の範囲の上限、すなわち 2 の 53 乗 - 1。

Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // true Number.MAX_SAFE_INTEGER === Number.MAX_SAFE_INTEGER + 1; // false Number.MAX_SAFE_INTEGER - 1 === Number.MAX_SAFE_INTEGER - 2; // false

最小安全整数

安全整数の範囲の下限、すなわち 2 の 53 乗 - 1 の負の数。

Number.MIN_SAFE_INTEGER + 1 === Number.MIN_SAFE_INTEGER + 2; // false Number.MIN_SAFE_INTEGER === Number.MIN_SAFE_INTEGER - 1; // false Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2; // true

プロパティ属性

writable:false
enumerable:false
configurable:false

メソッド

Number オブジェクトの新しいメソッド

Number.isFinite()

数値が有限(finite)かどうか(つまり Infinity でないか)をチェックするために使用します。

console.log( Number.isFinite(1)); // true console.log( Number.isFinite(0.1)); // true //NaN は有限ではありません。 console.log( Number.isFinite(NaN)); // false console.log( Number.isFinite(Infinity)); // false console.log( Number.isFinite(-Infinity)); // false //Number.isFinate には暗黙の Number() 型変換がなく、数値以外はすべて false を返します。 console.log( Number.isFinite('foo')); // false console.log( Number.isFinite('15')); // false console.log( Number.isFinite(true)); // false Number.isNaN()値が ... であるかを確認するために使用します。NaN 。 console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN('true'/0)); // true //グローバルの isNaN() では、判定前に非数値が数値に変換されるため、以下はすべて true を返します。 //一方、Number.isNaN() には暗黙の Number() 型変換がなく、NaN 以外はすべて false を返します。 Number.isNaN("NaN"); // false Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("true"); // false

グローバルから Number オブジェクトに移植されたメソッド

グローバルメソッドを段階的に減らし、グローバル変数のモジュール化を目的としています。

メソッドの動作は変更されていません。

Number.parseInt()

指定された文字列を指定の基数の整数に変換するために使用します。

//基数を指定しない場合は、デフォルトで 10 進数になります。 Number.parseInt('12.34'); // 12 Number.parseInt(12.34); // 12 //基数を指定 Number.parseInt('0011',2); // 3 //グローバルの parseInt() 関数と同じ関数です。 Number.parseInt === parseInt; // true Number.parseFloat()文字列を浮動小数点数に解析するために使用します。Number.parseFloat('123.45') // 123.45 Number.parseFloat('123.45abc') // 123.45 //浮動小数点数として解析できない場合は NaN を返します。 Number.parseFloat('abc') // NaN //グローバルの parseFloat() メソッドと同じメソッドです。 Number.parseFloat === parseFloat // true Number.isInteger()指定された引数が整数かどうかを判定するために使用します。Number.isInteger(value) Number.isInteger(0); // true //JavaScript 内部では、整数と浮動小数点数は同じ格納方法を採用しているため、1 と 1.0 は同じ値として扱われます。 Number.isInteger(1); // true Number.isInteger(1.0); // true Number.isInteger(1.1); // false Number.isInteger(Math.PI); // false //NaN と正負の Infinity は整数ではありません。 Number.isInteger(NaN); // false Number.isInteger(Infinity); // false Number.isInteger(-Infinity); // false Number.isInteger("10"); // false Number.isInteger(true); // false Number.isInteger(false); // false Number.isInteger([1]); // false //数値の精度が 53 ビットを超えると、54 ビット目以降が破棄されるため、誤判定が発生します。 Number.isInteger(1.0000000000000001) // true //ある数値の絶対値が Number.MIN_VALUE(5E-324)、すなわち JavaScript が識別できる //最小値より小さい場合、自動的に 0 に変換され、誤判定も発生します。 Number.isInteger(5E-324); // false Number.isInteger(5E-325); // true Number.isSafeInteger()数値が安全な範囲内にあるかどうかを判定するために使用します。Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1); // false Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1); // false

Math オブジェクトの拡張

ES6 では Math オブジェクトに数学関連の静的メソッドが 17 個追加されました。これらのメソッドは Math 内でのみ呼び出すことができます。

通常の計算

Math.cbrt

数値の立方根を計算するために使用します。

Math.cbrt(1); // 1 Math.cbrt(0); // 0 Math.cbrt(-1); // -1 //非数値を変換します。 Math.cbrt('1'); // 1 //非数値かつ数値に変換できない場合は NaN を返します。 Math.cbrt('hhh'); // NaN
Math.imul

2 つの数値を 32 ビット符号付き整数として乗算した結果を返します。返される値も 32 ビットの符号付き整数です。

//ほとんどの場合、結果は a * b と同じです。 Math.imul(1, 2); // 2 //大きな数値の乗算結果の下位ビットの値を正確に返すために使用します。 Math.imul(0x7fffffff, 0x7fffffff); // 1
Math.hypot

すべての引数の平方和の平方根を計算するために使用します。

Math.hypot(3, 4); // 5 //非数値は先に数値に変換されてから計算されます。 Math.hypot(1, 2, '3'); // 3.741657386773941 Math.hypot(true); // 1 Math.hypot(false); // 0 //空の値は 0 に変換されます。 Math.hypot(); // 0 Math.hypot([]); // 0 //引数が Infinity または -Infinity の場合は Infinity を返します。 Math.hypot(Infinity); // Infinity Math.hypot(-Infinity); // Infinity //引数の中に数値に変換できないものがある場合は NaN を返します。 Math.hypot(NaN); // NaN Math.hypot(3, 4, 'foo'); // NaN Math.hypot({}); // NaN
Math.clz32

数値の 32 ビット符号なし整数形式における先頭の 0 の個数を返すために使用します。

Math.clz32(0); // 32 Math.clz32(1); // 31 Math.clz32(0b01000000000100000000000000000000); // 1 //引数が小数の場合、整数部分のみが考慮されます。 Math.clz32(0.5); // 32 //空の値や非数値の場合は、数値に変換してから計算します。 Math.clz32('1'); // 31 Math.clz32(); // 32 Math.clz32([]); // 32 Math.clz32({}); // 32 Math.clz32(NaN); // 32 Math.clz32(Infinity); // 32 Math.clz32(-Infinity); // 32 Math.clz32(undefined); // 32 Math.clz32('hhh'); // 32

数値処理

Math.trunc

数値の整数部分を返すために使用します。

Math.trunc(12.3); // 12 Math.trunc(12); // 12 //整数部分が 0 の場合も符号を判定します。 Math.trunc(-0.5); // -0 Math.trunc(0.5); // 0 //Math.trunc は非数値を数値に変換してから処理します。 Math.trunc("12.3"); // 12 //空の値または数値に変換できない場合は NaN を返します。 Math.trunc(); // NaN Math.trunc(NaN); // NaN Math.trunc("hhh"); // NaN Math.trunc("123.2hhh"); // NaN
Math.fround

数値の 32 ビット単精度浮動小数点数形式を取得するために使用します。

//2 の 24 乗の負の値から 2 の 24 乗までの間の整数(両端を含まない)については、返される結果は引数と同じです。 Math.fround(-(2**24)+1); // -16777215 Math.fround(2 ** 24 - 1); // 16777215 //64 ビットの倍精度浮動小数点数を 32 ビットの単精度浮動小数点数に変換するために使用します。 Math.fround(1.234) // 1.125 //小数の精度が 24 ビットを超えると、精度が失われます。 Math.fround(0.3); // 0.30000001192092896 //引数が NaN または Infinity の場合はその値を返します。 Math.fround(NaN) // NaN Math.fround(Infinity) // Infinity //引数が他の非数値型の場合は、引数を変換します。 Math.fround('5'); // 5 Math.fround(true); // 1 Math.fround(null); // 0 Math.fround([]); // 0 Math.fround({}); // NaN

判定

Math.sign

数値の符号(正、負、0)を判定します。

Math.sign(1); // 1 Math.sign(-1); // -1 //引数が 0 の場合、0 の符号によって返り値が異なります。 Math.sign(0); // 0 Math.sign(-0); // -0 //判定前に非数値を変換します。 Math.sign('1'); // 1 Math.sign('-1'); // -1 //引数が非数値(数値に変換できない)場合は NaN を返します。 Math.sign(NaN); // NaN Math.sign('hhh'); // NaN

対数メソッド

Math.expm1()

e の x 乗から 1 を引いた結果、すなわち Math.exp(x) - 1 を計算するために使用します。

Math.expm1(1); // 1.718281828459045 Math.expm1(0); // 0 Math.expm1(-1); // -0.6321205588285577 //非数値を変換します。 Math.expm1('0'); //0 //引数が数値ではなく、かつ数値に変換できない場合は NaN を返します。 Math.expm1(NaN); // NaN
Math.log1p(x)

1 + x の自然対数、すなわち Math.log(1 + x) を計算するために使用します。

Math.log1p(1); // 0.6931471805599453 Math.log1p(0); // 0 Math.log1p(-1); // -Infinity //引数が -1 より小さい場合は NaN を返します。 Math.log1p(-2); // NaN
Math.log10(x)

10 を底とする x の対数を計算するために使用します。

Math.log10(1); // 0 //計算前に非数値を変換します。 Math.log10('1'); // 0 //引数が 0 の場合は -Infinity を返します。 Math.log10(0); // -Infinity //引数が 0 より小さい場合、または引数が数値でない(かつ数値に変換できない)場合は NaN を返します。 Math.log10(-1); // NaN
Math.log2()

2 を底とする x の対数を計算するために使用します。

Math.log2(1); // 0 //計算前に非数値を変換します。 Math.log2('1'); // 0 //引数が 0 の場合は -Infinity を返します。 Math.log2(0); // -Infinity //引数が 0 より小さい場合、または引数が数値でない(かつ数値に変換できない)場合は NaN を返します。 Math.log2(-1); // NaN

双曲線関数メソッド

  • Math.sinh(x): 双曲線正弦を計算するために使用します。
  • Math.cosh(x): 双曲線余弦を計算するために使用します。
  • Math.tanh(x): 双曲線正接を計算するために使用します。
  • Math.asinh(x): 逆双曲線正弦を計算するために使用します。
  • Math.acosh(x): 逆双曲線余弦を計算するために使用します。
  • Math.atanh(x): 逆双曲線正接を計算するために使用します。

指数演算子

1 ** 2; // 1 //右結合で、右から左に計算します。 2 ** 2 ** 3; // 256 // **= let exam = 2; exam ** = 2; // 4