まとめ
今のところ3つの方法を考えました。読者が他の良い方法を考えると、彼らはまたコミュニケーションをとることができます。
parseint
ビットオペレーター
math.floor math.ceil
説明
1。Parseint
1。例
parseint( "13nash"); // 13parseint( "")// nanparseint( "0xa")// 10(hexadecimal)parseint( "13")// 13parseint( "070")//
2。変換ルール:
(1)。例(1)によると、ParseIntは非番号が停止するまで解析されます
(2)。例(2)によると、0ではなく空の文字列を解析するときはナンです
(3)。例(3)によると、Parseintは16進数を10進数に変換できます
(4)。例(4)によると、Parseintは文字列の空間を無視します
3。短所:
(1)。例(5)によると、Octalアレイを変換するときにParseintが互換性がないことがわかります。 ES3は070をオクタル値と見なしますが、ES5は070を10進数と見なします。
(2)。例によると、(6)(7)によると、ParseIntが実行されたときに、最初にパラメーターを文字列に変換し、次に整数に実行することがわかります。
4。説明:なぜ(5)(6)実行が070を整数に変換しますが、結果は異なりますか?これは、欠点を解決する方法の2番目のポイントでもあります。
公式のドキュメントを読むと、文字列が文字列でない場合に見たので、それは1つに変換されます。この一節。つまり、パラメーターが文字列ではない場合、最初に文字列に変換してから整数に変換します。たとえば、例(6)のparseint(070)は、実際に070を最初に文字列に変換します。 070+ ""またはstring(070)を試すことができ、070がオクタルシステムであるため、070が「56」に変換されることを知っています。その後、Parseint( "56")になり、最終整数は56です。ES3であろうとES5であろうと、56です
2。ビット演算子
1。例
console.log(0 | "123.45")// 123Console.log(0 | 123.45)// 123Console.log(0 ^ 123.45)// 123Console.log(~~ 123.45)// 123
2。原則:JavaScriptには整数の概念がなく、すべての数値タイプは二重精度の浮動小数点数です。ビット演算子を使用する場合、最初にオペランドを整数に変換します。これは操作に便利です。 0およびその他の値は操作値を変更しません
3。Math.FloorとMath.Ceil
1。例
console.log(math.floor(2.3)// 2console.log(math.floor(-2.3)//-3console.log(math.ceil(2.3)// 3console.log(math.ceil(-2.3)//-2))
2。2つは不十分です。Math.Floorは、数の最小整数を取得します。 Math.ceilが最大整数を取得します。したがって、-2.3を丸めた場合、-2を取得しますが、Math.floorを使用すると-3が取得されます。 2.3はmath.ceilを使用して3を取得しますが、2だけが必要です。
3。解決:
// getint(val){return val> 0? math.floor(val):math.ceil(val);}