ホームページ > 記事 > ウェブフロントエンド > javascript_javascript スキルを使用して浮動小数点数を整数に変換する 3 つの方法
概要
今のところ方法は 3 つしか思いつきません。読者が他の便利な方法を思いついた場合は、それを共有することもできます
parseInt
ビット演算子
Math.floor Math.ceil
説明
1.parseInt
1. 例
parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")//13 parseInt("070")//ES3为56(八进制) ES5为70 parseInt(070)//ES3和ES5都为56 parseInt(22.5)//22
2. 変換ルール:
(1) 例 (1) によれば、parseInt は数値でなくなるまで解析し、
を停止します。
(2) 例 (2) によれば、空の文字列を解析する場合、parseInt は 0
ではなく NaN になります。
(3) 例 (3) によれば、parseInt は 16 進数を 10 進数に変換できます
(4) 例 (4) によれば、parseInt は文字列
3. 欠点:
(1). 例 (5) によれば、8 進数配列を変換する場合、parseInt は互換性がないことがわかります。 ES3 は 070 を 8 進数値として扱いますが、ES5 は 070 を 10 進数値として扱います。
(2). 例 (6) (7) によれば、parseInt はまずパラメータを文字列に変換し、それから整数に変換することがわかります
4. 説明: (5) と (6) の実行はすべて 070 を整数に変換することを目的としているのに、結果が異なるのはなぜですか?これが欠点をどうやって解決するかという2つ目のポイントでもあります。
公式ドキュメントで、文字列が文字列でない場合は文字列に変換されると見たからです。この一節。つまり、パラメータが文字列でない場合は、まず文字列に変換され、次に整数に変換されます。たとえば、例 (6) の parseInt(070) は、最初に 070 を文字列に変換します。070 は 8 進数であるため、070 "" または String(070) を試すことができます。次に、parseInt("56") となり、最終的な整数は 56 になります。 ES3 であろうと ES5 であろうと、それは 56
2. ビット演算子
1. 例
console.log(0 | "123.45")//123 console.log(0 | 123.45)//123 console.log(0 ^ 123.45)//123 console.log(~~123.45)//123
2. 原則: JavaScript には整数の概念がなく、すべての数値型は倍精度浮動小数点数です。ビット演算子を使用する場合、演算を容易にするために、まずオペランドを整数に変換します。ただし、0と他の値のXOR、またはビットごとのORは演算値を変更しません
3. Math.floor と Math.ceil
1. 例
console.log(Math.floor(2.3)//2 console.log(Math.floor(-2.3)//-3 console.log(Math.ceil(2.3)//3 console.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. 解決策:
//自行定义一个函数 function getInt(val){ return val>0 ? Math.floor(val):Math.ceil(val); }