JS でデータを数値に変換するには、次の 3 種類 5 つのメソッドがあります。
•強制、JS の基本データ型は、この方法で対応する型 (Number(v)) に変換されます。
•ネイティブ関数、これら 2 つの関数は異なる結果になります (parseInt(v,radix)、parseFloat(v))
•暗黙的な変換。JS は実行中に変数を対応する型 (ビット計算、数学計算) に変換します。
変換された元の値は、オブジェクト、特殊値、文字列の 3 つのカテゴリに単純に分類することもできます。
JSにおける特殊な値には以下のようなものがあります。
・未定義、未定義、変数が宣言されているが値が割り当てられていない場合、またはオブジェクトに存在しない属性の値がこれに該当します。
•NaN/無限大、これらは 2 つの頑固な「数値」 (typeof == 数値) であり、それぞれ非数値と無限数を表します。数値への変換に失敗した場合、戻り値は基本的に NaN になるようです。
•null、値がゼロのオブジェクトとして使用されます (typeof == object)。
•true/false、ブール値。true または false を表し、1/0 に相当します。
文字列の場合は、内容に基づいて細分化することもできます。 JSの数値表現によれば、合法なものと違法なものに分けられます。法的な番号を分類するには、いくつかの異なる方法があります。
•符号: 正符号、負符号、符号なし
•基数: 8 進数、10 進数、16 進数
•科学的表記法
•小数、整数、および小数の略語
上記の分類に基づいて、さまざまな方法と数値変換の結果をテストするためのデモを作成しました。以下のスクリーンショットは、Chrome での変換です。
結果を見ると、ビット計算のみが任意の値を有限数に変換できます (isFinite)。数学的計算と強制変換の結果は同じです。
特殊な値の変換は、元の値と変換方法に関係します。すべての parseInt/parseFloat 変換は失敗し、NaN を返します。
•NaN/unknown は他の方法で NaN に変換されます。
•Infinity は parseInt によって NaN に変換され、残りのメソッドはその値を変更しません。
•null/false/trueはparseInt/parseFloatでは変換できず、NaNを返します。
文字列の変換解析は主に変換方法に依存しますが、いずれの方法も8進数で表される数値には対応しておらず、対応する10進数として扱われます。
• 論理計算では、負の 16 進数を除く正当な式が変換され、不正な式はゼロを返します。
•数学的計算/数値は論理計算に似ていますが、空の文字列以外の不正な式は NaN を返します。
•parseInt も整数部分のみを保持しますが、不正な式の場合は、文字列の前にある正当な整数 (10 進数、16 進数、科学表記法を除く) 部分を取得して変換し、それ以外の場合は NaN を返します。
•parseFloat は parseInt に似ていますが、小数部分を認識して保持できることと、16 進数をサポートしない点が異なります。