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 コードを使いやすくしています。