JavaScript 速習チュートリアル

JavaScript Number メソッド

1. 基本的なメソッド(Basic Methods)

基本的な数値メソッドは、リテラル変数、またはエクスプレッション(式)など、あらゆる数値に対して使用できます。

  • toString()
  • toExponential()
  • toFixed()
  • toPrecision()
  • valueOf()

2. toString() メソッド

toString() メソッドは、数値を**文字列(String)**として返します。すべての数値メソッドは、あらゆる種類の数値に使用可能です。

let x = 123;
x.toString();            // "123" を返す
(123).toString();        // "123" を返す
(100 + 23).toString();   // "123" を返す

また、toString() メソッドはオプションとして基数(Radix)を引数に取り、数値を異なる進数に変換して出力することも可能です。

let x = 123;
let text = x.toString(2); // "1111011"(2進数)を返す

3. toExponential() メソッド

toExponential() は、数値を丸めて指数表記(Exponential notation)で記述された文字列を返します。引数によって小数点以下の桁数を定義できます。

let x = 9.656;
x.toExponential(2); // "9.66e+0" を返す
x.toExponential(4); // "9.6560e+0" を返す
x.toExponential(6); // "9.656000e+0" を返す

パラメータは任意です。指定しない場合、JavaScript は数値を丸めません。

4. toFixed() メソッド

toFixed() は、指定した小数点以下の桁数で数値を記述した文字列を返します。

let x = 9.656;
x.toFixed(0); // "10" を返す
x.toFixed(2); // "9.66" を返す
x.toFixed(4); // "9.6560" を返す
x.toFixed(6); // "9.656000" を返す

toFixed(2) は、金額(通貨)を扱う際の処理に最適です。

5. toPrecision() メソッド

toPrecision() は、指定した長さ(有効桁数)で数値を記述した文字列を返します。

let x = 9.656;
x.toPrecision();  // "9.656" を返す
x.toPrecision(2); // "9.7" を返す
x.toPrecision(4); // "9.656" を返す
x.toPrecision(6); // "9.65600" を返す

6. valueOf() メソッド

valueOf() は、数値を数値型として返します。

let x = 123;
x.valueOf();            // 123 を返す
(123).valueOf();        // 123 を返す
(100 + 23).valueOf();   // 123 を返す

JavaScript において、数値はプリミティブ値(typeof = number)またはオブジェクト(typeof = object)の両方の形態を取り得ます。valueOf() メソッドは、JavaScript 内部で Number オブジェクトをプリミティブ値に変換するために使用されます。

通常のコードで明示的に使用する必要はほとんどありません。なお、JavaScript のすべてのデータ型には valueOf()toString() メソッドが備わっています。

7. 変数を数値に変換する

JavaScript には、変数を数値に変換するために使用できる 3 つのグローバルメソッドがあります。これらは Number のメソッドではなく、グローバルな JavaScript メソッドです。

メソッド説明
Number()引数から変換された数値を返す。
parseFloat()引数をパースして浮動小数点数を返す。
parseInt()引数をパースして整数を返す。

8. Number() メソッド

Number() メソッドは、JavaScript の変数を数値に変換するために使用されます。

Number(true);      // 1 を返す
Number(false);     // 0 を返す
Number("10");      // 10 を返す
Number("  10");    // 10 を返す
Number("10  ");    // 10 を返す
Number(" 10  ");   // 10 を返す
Number("10.33");   // 10.33 を返す
Number("10,33");   // NaN を返す
Number("10 33");   // NaN を返す
Number("John");    // NaN を返す

数値を変換できない場合は、NaN(Not a Number)が返されます。

8.1 日付(Date)に対する Number() の使用

Number() は日付を数値に変換することもできます。

Number(new Date("1970-01-01")) // 0 を返す

このメソッドは、1970年1月1日からの経過ミリ秒数を返します。例えば、1970-01-02 と 1970-01-01 の差は 86,400,000 ミリ秒になります。

Number(new Date("1970-01-02")) // 86400000 を返す
Number(new Date("2017-09-30")) // 1506729600000 を返す

9. parseInt() メソッド

parseInt() は文字列をパースし、整数(Whole number)を返します。スペースは許容されますが、最初の数値のみが返されます。

parseInt("-10");       // -10 を返す
parseInt("-10.33");    // -10 を返す
parseInt("10");        // 10 を返す
parseInt("10.33");     // 10 を返す
parseInt("10 20 30");  // 10 を返す
parseInt("10 years");  // 10 を返す
parseInt("years 10");  // NaN を返す

10. parseFloat() メソッド

parseFloat() は文字列をパースし、数値(浮動小数点数)を返します。スペースは許容されますが、最初の数値のみが返されます。

parseFloat("10");       // 10 を返す
parseFloat("10.33");    // 10.33 を返す
parseFloat("10 20 30"); // 10 を返す
parseFloat("10 years"); // 10 を返す
parseFloat("years 10"); // NaN を返す

11. Number オブジェクトの静的メソッド

これらのメソッドは Number オブジェクトに直接属しており、Number.isInteger() のようにアクセスする必要があります。

メソッド説明
Number.isInteger()引数が整数の場合に true を返す。
Number.isNaN()引数が NaN の場合に true を返す。
Number.isFinite()引数が Infinity でも NaN でもない場合に true を返す。
Number.isSafeInteger()引数がセーフな整数の場合に true を返す。
Number.parseFloat()文字列を数値に変換する。
Number.parseInt()文字列を整数に変換する。

これらのメソッドは変数に対して直接使用することはできません。X.isInteger()(X は変数)のように呼び出すと、TypeError: X.isInteger is not a function エラーが発生します。

12. Number.isInteger() メソッド

Number.isInteger() は、引数が整数の場合に true を返します。

Number.isInteger(10);   // true を返す
Number.isInteger(10.5); // false を返す

13. Number.isFinite() メソッド

Number.isFinite() は、引数が Infinity-Infinity、または NaN でない場合に true を返します。

Number.isFinite(123); // true を返す

14. Number.isNaN() メソッド

Number.isNaN() は、引数が NaN(Not a Number)である場合に true を返します。

Number.isNaN(123); // false を返す

NaN との等価性をチェックするには、===== ではなく、Number.isNaN() を使用するのが推奨される方法です。

15. Number.isSafeInteger() メソッド

セーフな整数(Safe integer)とは、倍精度浮動小数点数として正確に表現できる整数のことです。Number.isSafeInteger() は、引数がセーフな整数の場合に true を返します。

Number.isSafeInteger(10); // true を返す
Number.isSafeInteger(12345678901234567890); // false を返す

セーフな整数は、-(2^53 - 1) から +(2^53 - 1) までのすべての整数を指します。

  • セーフな範囲:9007199254740991
  • セーフではない範囲:9007199254740992

16. Number.parseFloat() と Number.parseInt()

これら Number オブジェクトのメソッドは、グローバルメソッドの parseFloat() および parseInt() と同じ動作をします。

Number.parseFloat("10.33");
Number.parseInt("10");

これらのメソッドが追加された目的は、グローバル機能のモジュール化(標準化)です。これにより、ブラウザ以外の環境でも同じ JavaScript コードを使いやすくしています。