内容へ移動
Water Sunlight
軽量プログラミングの文法 - JavaScript/Python
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
js:build-in:number
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== JavaScript Numberオブジェクト ====== --- //[[http://www.y2sunlight.com/water|y2sunlight]] 2021-07-26// [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number|Numberオブジェクト]]は数値型( number )を扱うためのラッパーオブジェクトです。 ===== NaNとInfinity ===== JavaScriptでは、以下の特殊な数値を Numberオブジェクトのプロパティが保持しています。 * NaN ・・・ ゼロをゼロで割った場合などの未定義な演算結果を表す値 * Infinity ・・・ 浮動小数点数が表現可能な最大値を超えた場合の値 ECMA標準では、これらの特殊な値はグローバル変数 ([[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN|NaN]] と [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Infinity|Infinity]]) としても定義されていますが、Numberオブジェクトの[[#静的プロパティ|静的プロパティ]]でも同じ値が保持されています。 NaN に対する演算は、特殊な振舞いをします。NaN を含むどんな演算もその結果は NaN になります。例えば、''NaN + 1'' は NaN になり、''NaN == 1'' は false になります。最も混乱させるのは、''NaN == NaN'' の結果が false になるということです。従って、NaN には比較演算子を適用することが出来ません。この理由から、NaN を判定する特別な関数 isNaN() が提供されています。 \\ ===== Number()関数 ===== Numberオブジェクトはコンストラクタによって以下の様に生成されます。 <code javascript> let number = new Number(1); console.log(typeof(number)); // object </code> このコンストラクタは Numberオブジェクトを返しますが、あまり使用されることはなく、[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number|Number()]] 関数の方が良く使用されます。 <code javascript> let number = Number(1); console.log(typeof(number)); // number </code> 両者の違いは、Numberオブジェクトを返すか、基本データ型( number )を返すかの違いであり、厳密には異なりますが、実務上それは意識する必要がほとんどありません。 \\ ===== 静的プロパティ ===== 詳しくは[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number#static_properties|MDN]]をご覧下さい。 ^メンバー^概要^ |Number.EPSILON|計算機 ε(イプシロン)と呼ばれる1より大きい最小の数と1との差| |Number.MIN_VALUE|正の数の最小値| |Number.MAX_VALUE|正の数の最大値| |Number.MIN_SAFE_INTEGER|整数の最小値 -(2<sup>53</sup> - 1)| |Number.MAX_SAFE_INTEGER|整数の最大値 2<sup>53</sup> - 1| |Number.NaN|非数(Not a Number)の値| |Number.NEGATIVE_INFINITY|負の最大値を表す値(オーバーフロー時に返されます)| |Number.POSITIVE_INFINITY|正の最大値を表す値(オーバーフロー時に返されます)| \\ ===== 静的メソッド ===== 以下に主な Numberオブジェクトの静的メソッドの使用例を示します。詳しくは[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number#static_methods|MDN]]をご覧下さい。 ==== isNaN() ==== <code javascript> Number.isNaN(value) </code> 引数が NaN(Not a Number)且つ number型の場合、true を返します。NaN については[[#NaNとInfinity|前の項]]を参照して下さい。 <sxh javascript;title:Example> var x = 123; var ret = Number.isNaN(x); console.log(ret); // false var x = 1.23; var ret = Number.isNaN(x); console.log(ret); // false var x = '123'; var ret = Number.isNaN(x); console.log(ret); // false var x = 'abc'; var ret = Number.isNaN(x); console.log(ret); // false (NaN 且つ 非number型) var x = 1 / 0; var ret = Number.isNaN(x); console.log(ret); // false (Infinity) var x = 0 / 0; var ret = Number.isNaN(x); console.log(ret); // true (NaN 且つ number型) </sxh> Number.isNaN() 以外にグローバル関数の [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/isNaN|isNaN()]] もあります。この関数は引数が NaN のみを判定し、引数のデータ型には依存しません。 <sxh javascript;title:Example> console.log(isNaN(123)); // false console.log(isNaN(1.23)); // false console.log(isNaN('123')); // false console.log(isNaN('abc')); // true (NaN 且つ 非number型) console.log(isNaN(1/0)); // false (Infinity) console.log(isNaN(0/0)); // true (NaN 且つ number型) </sxh> \\ ==== isFinite() ==== <code javascript> Number.isFinite(value) </code> 引数が有限数( finity )の場合、true を返します。有限数でない値(infinity)については[[#NaNとInfinity|前の項]]を参照して下さい。 <sxh javascript;title:Example> var x = 123; var ret = Number.isFinite(x); console.log(ret); // true var x = 1.23; var ret = Number.isFinite(x); console.log(ret); // true var x = '123'; var ret = Number.isFinite(x); console.log(ret); // false (非number型) var x = 'abc'; var ret = Number.isFinite(x); console.log(ret); // false (非number型) var x = 1 / 0; var ret = Number.isFinite(x); console.log(ret); // false (Infinity) var x = 0 / 0; var ret = Number.isFinite(x); console.log(ret); // false (NaN) </sxh> Number.isFinite() 以外にグローバル関数の [[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/isFinite|isFinite()]] もあります。 \\ ==== isInteger() ==== <code javascript> Number.isInteger(value) </code> 引数が整数の場合、true を返します。 <sxh javascript;title:Example> var x = 123; var ret = Number.isInteger(x); console.log(ret); // true var x = 1.23; var ret = Number.isInteger(x); console.log(ret); // false var x = '123'; var ret = Number.isInteger(x); console.log(ret); // false (非number型) var x = 'abc'; var ret = Number.isInteger(x); console.log(ret); // false (非number型) var x = 1 / 0; var ret = Number.isInteger(x); console.log(ret); // false (Infinity) var x = 0 / 0; var ret = Number.isInteger(x); console.log(ret); // false (NaN) </sxh> \\ ==== parseFloat() ==== <code javascript> Number.parseFloat(string) </code> 引数の文字列を浮動小数点数( float )に変換します。グローバル関数の parseFloat と同じです。 <sxh javascript;title:Example> var x = 2; var ret = Number.parseFloat(x) * 2.0 * 3.14; console.log(ret); // 12.56 var x = 2; var ret = parseFloat(x) * 2.0 * 3.14; console.log(ret); // 12.56 </sxh> \\ ==== parseInt() ==== <code javascript> Number.parseInt(string,[ radix]) </code> 引数の文字列を指定された基数の整数に変換します。 <sxh javascript;title:Example> var x = 10; var ret = Number.parseInt(x, 2); // 2進数を10進数へ変換 console.log(ret); // 2 var x = 10; var ret = Number.parseInt(x, 8); // 8進数を10進数へ変換 console.log(ret); // 8 var x = 10; var ret = Number.parseInt(x, 16); // 16進数を10進数へ変換 console.log(ret); // 16 var x = '123'; var ret = Number.parseInt(x, 10); // 10進数の文字列をを整数に変換 console.log(ret); // 123 var x = 12.3; var ret = Number.parseInt(x, 10); // 浮動小数点数から整数に変換 console.log(ret); // 12 var x = 'abc'; var ret = Number.parseInt(x, 10); // 文字は整数に変換できない console.log(ret); // NaN </sxh> 上の例はグローバル関数 parseInt を使用した場合でも同様になります。 <sxh javascript;title:Example> var x = 10; var ret = parseInt(x, 2); console.log(ret); // 2 </sxh> \\ ===== インスタンスメソッド ===== 以下に主な Numberオブジェクトのインスタンスメソッドの使用例を示します。詳しくは[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number#instance_methods|MDN]]をご覧下さい。 ==== toString() ==== <code javascript> numObj.toString([radix]) </code> Numberオブジェクトを文字列に変換します。 <sxh javascript;title:Example> var x = new Number(123); var ret = x.toString(); console.log(ret); // 123 var x = new Number(1.23); var ret = x.toString(); console.log(ret); // 1.23 var x = new Number(1 / 0); var ret = x.toString(); console.log(ret); // Infinity var x = new Number(0 / 0); var ret = x.toString(); console.log(ret); // NaN </sxh> \\ ==== toLocaleString() ==== <code javascript> numObj.toLocaleString([locales [, options]]) </code> Numberオブジェクトをロケールに応じた形式に変換します。JavaScriptで数値をカンマ編集したい場合は、このメソッドが利用出来ます。 <sxh javascript;title:Example> var x = new Number(1234.56); var ret = x.toLocaleString(); console.log(ret); // 1,234.56 </sxh> \\ ==== toFixed() ==== <code javascript> numObj.toFixed([digits]) </code> Numberオブジェクトを指定された固定小数点表記に変換します。 <sxh javascript;title:Example> var x = new Number(1234.56); var ret = x.toFixed(3); console.log(ret); // 1234.560 </sxh> \\ ==== toPrecision() ==== <code javascript> numObj.toPrecision([precision]) </code> Numberオブジェクトを指定された精度の文字列に変換します。 <sxh javascript;title:Example> var x = new Number(1234.56); var ret = x.toPrecision(5); console.log(ret); // 1234.6 </sxh> \\ ==== toExponential() ==== <code javascript> numObj.toExponential([fractionDigits]) </code> Numberオブジェクトを指定された指定表記に変換します。 <sxh javascript;title:Example> var x = new Number(1234.56); var ret = x.toExponential(2); console.log(ret); // 1.23e+3 </sxh> \\ ==== valueOf() ==== <code javascript> numObj.valueOf() </code> Numberオブジェクトのプリミティブ値を返します。 <sxh javascript;title:Example> var x = new Number(1234.56); var ret = x.valueOf(); console.log(ret); // 1234.56 </sxh> \\ ===== 数値のバリデーション方法 ===== 入力された値または計算結果が数値であるか否かを判定(バリデーション)する場合は isNaN()またはisFinite()を使用した様々な方法がありますが、当サイトでは以下のisFinite()を使った方法で数値のバリデーションを行うことを推奨します。 <sxh javascript;title:Example> var x = 123; var ret = Number.isFinite(Number(x)); console.log(ret); // true var x = 1.23; var ret = Number.isFinite(Number(x)); console.log(ret); // true var x = '123'; var ret = Number.isFinite(Number(x)); console.log(ret); // true var x = 'abc'; var ret = Number.isFinite(Number(x)); console.log(ret); // false (NaN) var x = 1 / 0; var ret = Number.isFinite(Number(x)); console.log(ret); // false (Infinity) var x = 0 / 0; var ret = Number.isFinite(Number(x)); console.log(ret); // false (NaN) </sxh> isNaN()を使った方法では ''1 / 0'' の判定ができません(isNaN()はtrueを返す)。入力時のバリデーションに対してはいずれの方法を使用してもバリデーションできると思います。 \\
js/build-in/number.txt
· 最終更新: 2021/08/03 11:34 by
tanaka
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ