ホームページ >ウェブフロントエンド >jsチュートリアル >JS 文字列を数値に変換する 5 つの方法を共有する
JavaScript は魔法の言語です。文字列を数値に変換する方法は 5 つありますが、それぞれに落とし穴があります。
この記事では、JavaScript の文字列を数値に変換する 5 つの方法とその落とし穴を紹介します。
文字列を数値に変換する方法はたくさんありますが、私は 5 つ思いつきます。
parseInt(num); // 默认方式 (没有基数) parseInt(num, 10); // 传入基数 (十位数) parseFloat(num); // 浮点数 Number(num); // Number 构造器 ~~num; //按位非 num / 1; // 除一个数 num * 1; // 乘一个数 num -0 // 减去0 + num; // 一元运算符 "+"
どれを選びますか?いつ選択するのですか?なぜこのようなものを選ぶのでしょうか?それらを 1 つずつ検討し、各アプローチに共通する落とし穴を分析します。
JsPerf.com のベンチマークによると、ほとんどのブラウザは parseInt に最もよく応答します。これが最も速い方法ではありますが、preseInt を使用すると、いくつかの一般的な落とし穴に遭遇します。
parseInt("08"); // returns 0 部分老浏览器. parseInt("44.jpg"); // returns 44
parseInt
: ベースが渡されない場合、デフォルトのベースは 10 parseInt(num, 10) )
、num 属性の型がわからない場合は、parseInt を使用して文字列を数値に変換しないでください。
parseFloat
これは、16 進数を解析しない場合に非常に良い選択です。例:
parseInt(-0xff); // returns -255 parseInt("-0xFF"); // returns -255 parseFloat(-0xff); // returns -255 parseFloat("-0xFF"); // returns 0
注: 文字列内の負の 16 進数は特殊なケースであり、parseFloat で解析すると、結果は正しくなくなります。プログラム内で NaN の状況を回避するには、変換された値を確認する必要があります。
parseFloat("44.jpg"); // return 44
parseFloat
: 16 進数を変換するときは注意してください。変換するオブジェクトの種類がわからない場合は、parseFloat を使用しないでください。
Bitwise not
は文字列を整数に変換できますが、それは浮動小数点数ではありません。文字列変換の場合は 0 が返されます;
~~1.23; // returns 1 ~~"1.23"; // returns 1 ~~"23"; // returns 23 ~~"Hello world"; // returns 0
原理は何ですか?各ビットを反転することにより、数値の A1 の補数とも呼ばれます。これを使用することもできますが、整数を格納するためにのみ使用できることに注意してください。したがって、通常は、数値が 32 ビット整数の範囲内であることが確実でない限り、これを使用しないでください (ToInt32 を呼び出す仕様のため)。
ビット単位ではありません
: これを使用して、入力に文字が含まれておらず、整数のみが含まれていることを確認します。
Number
Number には、上記の変換方法と同じ問題があり、解析時に、指定された数値を見つけようとします。 :
Number("023"); // returns 23 Number(023); // returns 19
注: 023 は実際には 8 進数であり、何をしても 19 が返されます。一重引用符や二重引用符のない 16 進数にも同じことが当てはまります。
Number は、JsPerf の中で最も遅いものの 1 つです。
番号
: ほとんど使用しません。
単項クラウド演算子
"1.23" * 1; // returns 1.23 "0xFF" - 0; // returns 255 "0xFF.jpg" / 1 + // returns NaN "023"; // returns 23
単項演算子は、他の解析メソッドとは異なります。NaN 値の場合、戻り値は次のようになります。 NaN も。これは、数値を変換する私のお気に入りの方法です。文字を含むオブジェクトを 0 として扱ったり、ビット数に基づいて「推測」したりすべきではないと考えているからです。混乱が少ないため、私は基本的に
演算子を使用します。 -0
という使い方も良いのですが、数値に変換するという本来の意図がうまく表現されていません。
文字列を数値に変換する最良の方法は?
負の 16 進文字列を数値に変換する場合。最初に String に変換し (例: ""
)、次に単項演算子または radix を指定した parseInt を使用して数値に解析する必要があります。ただし、結果が NaN 値ではない場合は、parseFloat を使用する方が適切です。
推奨チュートリアル: 「JS チュートリアル 」
以上がJS 文字列を数値に変換する 5 つの方法を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。