ホームページ  >  記事  >  ウェブフロントエンド  >  javascript_javascript スキルを使用して浮動小数点数を整数に変換する 3 つの方法

javascript_javascript スキルを使用して浮動小数点数を整数に変換する 3 つの方法

WBOY
WBOYオリジナル
2016-05-16 16:43:181201ブラウズ

概要

今のところ方法は 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);
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。