JavaScript文字列は数字の5種類の方法と落とし穴を回転します.
2924 ワード
要旨:JavaScriptは不思議な言語で、文字列の回転数は5つの方法があります.それぞれ穴法があります.原文:Coverting Strigs to Number in Javascript:Pitfalls 翻訳者:Fundbug この文章は意訳を採用して、著作権は元の作者の所有になります.
StringからNumberに変換する方法はいろいろあります.私が考えられるのは5種類です.
parseInt
Js Perf.comの基準テストによれば、ほとんどのブラウザはパーrseIntに対する応答が一番良いです.それは一番早い方法ですが、preseIntを使うといくつかのよくある落とし穴に出会います.
パーrse Float
16進数を解析しないなら、これはとてもいい選択です.たとえば:
位によって違う
文字列を整数に変換できますが、彼は浮動小数点ではありません.文字列変換であれば、0を返します.
Number
Numberは上記の変換方式と同じように問題があります.解析する時に彼に与えられた数字を探してみます.
NumberもJsPerfの中で最も遅いものの一つです.
単項演算子
文字列を数値に変換してまとめます.
負の16進数文字列を数値に変換する場合.最初に、任意のものをStringに変換し(例えば、
Funebugについて
FunndebugはJavaScript、微信小プログラム、微信小ゲーム、支払宝小プログラム、React Native、Node.js、JavaオンラインでリアルタイムBUG監視を適用します.2016年に双十一が正式にオンラインしてから、Fundebugは累計で10億+エラー事件を処理しました.有料顧客はGoogle、360、金山軟件、庶民網など多くのブランド企業があります.皆さん、無料で試用してください.
著作権声明
転載する時、作者のFunebugと本文の住所を明記してください.
https://blog.fundebug.com/2018/07/07/string-to-number/
StringからNumberに変換する方法はいろいろあります.私が考えられるのは5種類です.
parseInt(num); // ( )
parseInt(num, 10); // ( )
parseFloat(num); //
Number(num); // Number
~~num; //
num / 1; //
num * 1; //
num -
0 + // 0
num; // "+"
どちらを選びますか?いつそれを選びますか?なぜこのようなものを選んだのですか?逐一解析を行い,各方式の共通トラップを解析した.parseInt
Js Perf.comの基準テストによれば、ほとんどのブラウザはパーrseIntに対する応答が一番良いです.それは一番早い方法ですが、preseIntを使うといくつかのよくある落とし穴に出会います.
parseInt("08"); // returns 0 .
parseInt("44.jpg"); // returns 44
parseInt
:着信基数がない場合、デフォルトでは着信基数は10 parseInt(num, 10)
であり、num属性のタイプが分からない場合、パーrseIntを使用して文字列を回転しないでください.パーrse Float
16進数を解析しないなら、これはとてもいい選択です.たとえば:
parseInt(-0xff); // returns -255
parseInt("-0xFF"); // returns -255
parseFloat(-0xff); // returns -255
parseFloat("-0xFF"); // returns 0
注意:文字列の負の16進数の数字は特殊な場合、パーrseFloatを使って解析すると、結果は正しくありません.プログラムにNaNが発生しないように、変換後の値を確認します.parseFloat("44.jpg"); // return 44
parseFloat
:16進数を変換する時は注意してください.もし変換対象のタイプが分からないなら、パーrseFloatを使わないでください.位によって違う
文字列を整数に変換できますが、彼は浮動小数点ではありません.文字列変換であれば、0を返します.
~~1.23; // returns 1
~~"1.23"; // returns 1
~~"23"; // returns 23
~~"Hello world"; // returns 0
これはどういう原理ですか?各ビットを反転させることにより、デジタルA 1の補数とも呼ばれる.これを使ってもいいですが、整数だけを記憶することができます.したがって、通常は32ビットの整数の間の値を決定することができない限り、それを使用しないでください.
:入力中に文字がないことを確認して、整数だけにします.Number
Numberは上記の変換方式と同じように問題があります.解析する時に彼に与えられた数字を探してみます.
Number("023"); // returns 23
Number(023); // returns 19
注意:023は実際には8進数です.どうやって作っても19に戻ります.シングルクォーテーションマークまたはダブルクォーテーションマークがない16進数は同じです.NumberもJsPerfの中で最も遅いものの一つです.
Number
:ほとんど使わないです.単項演算子
"1.23" * 1; // returns 1.23
"0xFF" - 0; // returns 255
"0xFF.jpg" / 1 + // returns NaN
"023"; // returns 23
単項演算子は他の解析方式とは異なり、NaN値であれば、NaNを返します.これは私が一番好きな数値の変換方法です.文字のあるオブジェクトはどれも0として扱われるべきではないと思います.あるいは彼の何人がいるかによって、「当てる」べきです.私は基本的に+
オペレータを使います.この方式は紛らわしいからです.-0
の使い方もいいですが、数字に変換するという意味はあまりよく表現されていません.文字列を数値に変換してまとめます.
負の16進数文字列を数値に変換する場合.最初に、任意のものをStringに変換し(例えば、
+ ""
を介して)、その後、1つの要素演算子またはベースバンドのparseIntを用いて、数値として解析するべきである.しかし、結果がNaNの数値ではない場合は、パーパーミッションを使ったほうがいいです.Funebugについて
FunndebugはJavaScript、微信小プログラム、微信小ゲーム、支払宝小プログラム、React Native、Node.js、JavaオンラインでリアルタイムBUG監視を適用します.2016年に双十一が正式にオンラインしてから、Fundebugは累計で10億+エラー事件を処理しました.有料顧客はGoogle、360、金山軟件、庶民網など多くのブランド企業があります.皆さん、無料で試用してください.
著作権声明
転載する時、作者のFunebugと本文の住所を明記してください.
https://blog.fundebug.com/2018/07/07/string-to-number/