JavaScript には、数値以外のプリミティブを数値に変換するための 2 つのメソッド、 parseInt() と parseFloat() が用意されています。ご想像のとおり、前者は値を整数に変換し、後者は値を浮動小数点数に変換します。
文字列に含まれる数値リテラルも正しく変換されるため、文字列 "0xA" は数値 10 に適切に変換されます。ただし、文字列 "22.5" は 22 に変換されます。 . いくつかの例:
var iNum1 = parseInt("1234blue"); // 1234 を返します
var iNum2 = parseInt("0xA"); // 10 を返します
var iNum3 = parseInt("22.5"); // 22 を返します
var iNum4 = parseInt("青"); // NaN を返す
parseInt() メソッドには基数モードもあり、2 進数、8 進数、16 進数、またはその他の基数の文字列を整数に変換できます。基数は parseInt() の 2 番目の引数として指定されるため、16 進数値を解析する呼び出しは次のようになります。
var iNum1 = parseInt("AF", 16); // 175 を返します
もちろん、これは 2 進数、8 進数、さらには 10 進数 (デフォルト モード) に対しても実行できます。
var iNum1 = parseInt("10", 2); // 2 を返します
var iNum2 = parseInt("10", 8); // 8 を返します
var iNum2 = parseInt("10", 10); // 10 を返します
10 進数の先頭に 0 が含まれている場合は、誤って 8 進数になってしまわないように、基数を 10 に指定することをお勧めします。例えば:
var iNum1 = parseInt("010"); // 8 を返します
var iNum2 = parseInt("010", 8); // 8 を返します
var iNum3 = parseInt("010", 10); // 10 を返します
このコードでは、両方の行が文字列「010」を数値に解析しています。1 行目は、文字列が 8 進数であると見なし、2 行目 (基数を 8 に指定) と同じ方法で解析します。最後の行は 10 の基数を指定しているため、iNum3 は最終的に 10 になります。
parseFloat() を使用する場合のもう 1 つの違いは、文字列が浮動小数点数を 8 進数や 16 進数ではなく 10 進数で表す必要があることです。このメソッドは先頭のゼロを無視するため、8 進数 0908 は 908 に解析され、16 進数 0xA は NaN を返します。これは x が浮動小数点数の有効な文字ではないためです。parseFloat() には基数モードもありません。
parseFloat() の使用例:
var fNum1 = parseFloat("1234blue"); // 1234 を返します
var fNum2 = parseFloat("0xA"); // 0 を返します
var fNum3 = parseFloat("22.5"); // 22.5 を返します
var fNum4 = parseFloat("22.34.5"); // 22.34 を返します
var fNum5 = parseFloat("0908"); // 908 を返します
var fNum6 = parseFloat("青"); // NaN を返す
続きを読む,
続きを読む
同様の質問 詳細はこちら