ホームページ > 記事 > ウェブフロントエンド > javascript -数値型の値
概要
JavaScript は内部的に数値を表すために IEEE754 形式を使用するため、整数と浮動小数点数を区別せず、64 ビット浮動小数点数の形式で格納されます。つまり、JavaScript の内部には小数点がまったくありません。ただし、一部の操作は整数で完了する必要があるため、JavaScript は操作を実行する前に 64 ビット浮動小数点数を 32 ビット整数に変換することがあります。
整数
JavaScript は、整数の 4 つの表現方法を提供します:
1。2 進数: 0 または 1 以外の数値が表示される場合、エラーが報告されます
2。 8 進数: 接頭辞 0o が付いている値、または 0 の後に数字 (0 ~ 7) が続きます。上記の数値範囲を超える場合、最初の桁の 0 は無視され、10 進数として扱われます
注: 8 進リテラルは厳密モードでは無効であり、このモードをサポートする JavaScript エンジンでエラーがスローされます
3。 16 進数: 接頭辞 0x の後に任意の 16 進数 (0 ~ 9 および A ~ F) が続きます。範囲を超える場合は、エラーが報告されます
4。
var num2 = 0b11; console.log(num2); //3 var num2 = 0b12; console.log(num2); //报错 var num8 = 0o76; console.log(num8); //02 var num8 = 0o78; console.log(num8); //报错 var num16 = 0x2a; console.log(num16); //42 var num16 = 0x2h; console.log(num16) //报错
浮動小数点数
いわゆる浮動小数点数とは、値に小数点が含まれ、小数点の後に少なくとも 1 桁の数字が必要であることを意味します。整数とは異なり、浮動小数点数は 10 進数でしか表現できないため、浮動小数点数の演算を設計する場合は注意が必要です。たとえば、console.log(0.1 + 0.2 == 0.3); //false 0.30000000000000004 console.log(0.6/0.2); //2.9999999999999996
。
1. 小数点の前の数字が 21 桁以上ある
2. 小数点以下の 0 が 5 桁以上ある
数値の範囲
メモリの関係で ECMAScript の制限 世界中のすべての値を保存できるわけではないため、最大値と最小値が存在します
最小値は Number.MIN_VALUE に格納され、この値は 5e-324 です
最大値は Number.MAX_VALUE に格納されます。この値は 1.7976931348623157e +308
console.log(1234567890123456789012);// 1.2345678901234568e+21 console.log(123456789012365648787); //123456789012365660000
数値が最大値を超えると、JavaScript は Infinity を返します。これは、正のオーバーフロー (オーバーフロー) と呼ばれます。負の最小値 -1023 (つまり、0 に非常に近い) に等しいかそれを超える場合、JavaScript はこの数値を 0 に直接変換することを負のオーバーフロー (アンダーフロー) と呼びます。値が有限であるかどうかを判断したい場合は、isFinite を使用できます。 () 関数。この関数は、引数が最小値と最大値の間にある場合に true を返します
console.log(0.0000006);//6e-7 console.log(0.000006); //0.000006
特別な値
1、+0、-0
これらの 2 つの 0 は、ビッグペア 数値の点ではすべて同等です
console.log(Number.MIN_VALUE) //5e-324 console.log(Number.MAX_VALUE); //1.7976931348623157e+308
が、分母として使用すると異なります
1/-0 == 1/+0; //false
2. infinity
Infinityは「無限」を意味し、2つのシナリオを表すために使用されます。 1 つは、正の値が大きすぎるか、負の値が小さすぎて表現できないことです。もう 1 つは、0 以外の値を 0 で割って無限大を得るということです。 Infinity が参加する計算の結果は、それ自体、0、または NaN のみです。オペランドが数値を返さない場合
var result = Number.MAX_VALUE + Number.MAX_VALUE; console.log(isFinite(result)); //false
1/-0 == 1/+0; //false
2、infinity
Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity。
-0 === +0; //true 0 === -0; //true 0 === +0; //true
Infinity参与的运算结果只能是其本身、0或NaN
Math.pow(2,Math.pow(2,100));//Infinity 1/0;//Infinity
3、NaN
这个数值表示一个本来要返回数值的操作数未返回数值的情况
NaN与任何值不相等,包括它本身,并且涉及NaN的任何操作都会返回NaN
* Infinity;//Infinity - Infinity;//-Infinity + Infinity;//Infinity / Infinity;//0 Infinity / 2;//Infinity Infinity * Infinity;//Infinity Infinity - Infinity;//NaN Infinity + Infinity;//Infinity Infinity / Infinity;//NaN
NaN不是一种独立的数据类型,而是一种特殊数值,它的数据类型依然属于Number
typeof NaN; //number
typeof NaN に属します。ただし、isNaN は数値に対してのみ有効です。他の値を入力した場合は、最初に数値に変換されます。たとえば、文字列が渡されると、その文字列は最初に NaN に変換されるため、最終的には true が返されます。これには特に注意が必要です。つまり、isNaN が true となる値は、NaN ではなく文字列である可能性があります。 <p class="jb51code"><br></p>
<p><pre class="brush:js;"> 5 - &#39;x&#39;; //NaN
Math.acos(2); //NaN
0 / 0; //NaN
NaN == NaN;//false
NaN == Infinity;//false</pre><br></p>
<p></p> NaN を判断するより信頼性の高い方法は、NaN がそれ自体と等しくない唯一の JavaScript の値であるという機能を使用して判断することです <p class="jb51code"><br></p>
<p><pre class="brush:js;"> isNaN(&#39;Hello&#39;) // true
// 相当于
isNaN(Number(&#39;Hello&#39;)) // true</pre><br></p>
<p><strong></strong>数体系変換</p>
<p></p> 数値以外の値を数値に変換できる関数は、Number()、parseInt()、parseFloat() の 3 つです。このうち、Number() は任意の型の値を数値に変換できますが、parseInt() と parseFloat() は文字列を数値に変換するためにのみ使用されます<p><span style="color: #0000ff"><strong></strong>Number()</span></p>
<p></p>変換ルール: <p></p>1 . ブール値の場合、true と false はそれぞれ 1 と 0 に変換されます<p></p>2。null 値の場合は 0🎜 が返されます。<p>3、如果是undefined,返回NaN</p>
<p>4、如果是字符串,遵循以下规则:</p>
<p>(1)若字符串只包含十进制或十六进制数字,则转成十进制的数字</p>
<p>注意:Number()不识别八进制数字的字符串,会按照十进制数字处理</p>
<p>字符串'1.2.'不会报错,但数字1.2.会报错</p>
<p>(2)若字符串为空字符串或空格字符串,则转成0</p>
<p>(3)其他情况的字符串,则转成NaN</p>
<p class="jb51code"><br></p><pre class="brush:js;">Number(true) //1
Number(null) //0
Number(undefined) //NaN
Number("0123") //123
Number("0x123") //291
Number("0.2") //0.2
Number("") //0
Number("asd") //NaN</pre><p><br></p>
<p><span style="color: #0000ff"><strong>parseInt()</strong></span></p>
<p>parseInt()专门用于把字符串转换成整数。在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符</p>
<p class="jb51code"><br></p><pre class="brush:js;"> console.log(parseInt(&#39; 123.8px&#39;));//123
console.log(parseInt(&#39; 123.8 &#39;));//123
console.log(parseInt(&#39; -123.8px&#39;));//-123
console.log(parseInt(&#39;a123.8px&#39;));//NaN
console.log(parseInt(&#39;0 123.8px&#39;));//0</pre><p><br></p>
<p>注意:在ECMAScript5中,parseInt()已经不具备解析八进制的能力。例如八进制“070”,会忽略前面的“0”,得到十进制的70</p>
<p>为了消除在使用parseInt()函数时可能导致的上述困惑,可以为这个函数提供第二个参数:转换时使用的基数(多少进制)</p>
<p class="jb51code"><br></p><pre class="brush:js;"> parseInt("070") //70
parseInt("070",8) //56</pre><p><br></p>
<p><span style="color: #0000ff"><strong>parseFloat()</strong></span></p>
<p>parseFloat()专门用于字符串转换浮点数。同样地,解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止</p>
<p class="jb51code"><br></p><pre class="brush:js;">console.log(parseFloat(&#39; 0123.px&#39;));//123
console.log(parseFloat(&#39; 123.px&#39;));//123
console.log(parseFloat(&#39; 123.1px&#39;));//123.1
console.log(parseFloat(&#39; 123.1.2px &#39;));//123.1
console.log(parseFloat(&#39; -123.0px&#39;));//-123
console.log(parseFloat(&#39;.123.1px&#39;));//0.123
console.log(parseFloat(&#39;0 123px&#39;));//0</pre><p><br></p>
<p>注意:parseFloat()只解析十进制,所以十六进制的字符串始终会被转换成0。因此也没有第二个参数用来指定基数</p>
<p><code> parseFloat("0xA") //0
注意:Number('')的结果是0,parseInt('')和parseFloat('')的结果是NaN
更多Number类型值相关文章请关注PHP中文网!