久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      javascript數(shù)值型有幾種

      javascript數(shù)值型只有一種:浮點(diǎn)類型。JavaScript內(nèi)部存儲(chǔ)數(shù)字都是按64位浮點(diǎn)類型存儲(chǔ)的,所以在JavaScript中實(shí)際上是沒有整數(shù)類型的。按照J(rèn)avaScript中的數(shù)字格式能夠表示的整數(shù)范圍為“[-2^53 ~ 2^53]”,包含邊界值;但需要注意的是,數(shù)組索引、位操作符等使用的是基于32位的整數(shù)。

      javascript數(shù)值型有幾種

      前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
      API 文檔、設(shè)計(jì)、調(diào)試、自動(dòng)化測(cè)試一體化協(xié)作工具:點(diǎn)擊使用

      本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

      在JavaScript中,數(shù)值類型只有一種,內(nèi)部表示為64位浮點(diǎn)數(shù)。所以在JavaScript中實(shí)際上是沒有整數(shù)類型的。

      print(3/2); // 1.5

      可見,數(shù)值都是按浮點(diǎn)數(shù)來處理的。

      因?yàn)镴avaScript內(nèi)部存儲(chǔ)數(shù)字都是按64位浮點(diǎn)類型存儲(chǔ)的,無論整數(shù)和小數(shù)。容易造成混淆的是,某些位運(yùn)算必須要整數(shù)才可以運(yùn)行,所以會(huì)自動(dòng)將64位浮點(diǎn)數(shù)轉(zhuǎn)化為32位整數(shù)。再進(jìn)行位運(yùn)算。在JavaScript中,1和1.0是一樣的

      1 == 1.0 true 0.1+0.2 == 0.3 false 0.3/0.1 = 2.99999999996 (0.3-0.2) === (0.2-0.1) false

      總之,涉及小數(shù)的運(yùn)算要小心

      按照J(rèn)avaScript中的數(shù)字格式(IEEE-754定義的64位浮點(diǎn)格式),能夠表示的整數(shù)范圍為[-2^53 ~ 2^53],包含邊界值。然而需要注意的是,數(shù)組索引、位操作符等使用的是基于32位的整數(shù)。

      浮點(diǎn)數(shù)值的最高精度是17位小數(shù),但在進(jìn)行算術(shù)計(jì)算時(shí)其精確度遠(yuǎn)遠(yuǎn)不如整數(shù)。例如,0.1加0.2的結(jié)果不是0.3,而是0.30000000000000004。這個(gè)小小的舍入誤差會(huì)導(dǎo)致無法測(cè)試特定的浮點(diǎn)數(shù)值。

      因?yàn)槎M(jìn)制浮點(diǎn)數(shù)可以精確地表示1/2、1/8等,但不能精確地表示1/10、1/100等。所以像0.1這樣的簡(jiǎn)單數(shù)字也不能精確表示。

      由于浮點(diǎn)數(shù)有精度問題,可能會(huì)在比較時(shí)得到一此意想不到的結(jié)果:

      print((0.1+0.2) == 0.3); // false print(0.1+0.2);          // 0.30000000000000004 print(0.3);              // 0.3  print((10/3-3) == (1/3));// false print(10/3-3);           // 0.3333333333333335 print(1/3);              // 0.3333333333333333

      對(duì)于整數(shù)的情況,只要使用53位以內(nèi)的整數(shù),則不會(huì)出現(xiàn)精度問題,可以放心使用。

      除了以十進(jìn)制表示外,整數(shù)還可以通過八進(jìn)制(以8為基數(shù))或十六進(jìn)制(以16為基數(shù))的字面值來表示。其中,八進(jìn)制字面值的第一位必須是零(0),然后是八進(jìn)制數(shù)字序列(0~7)。如果字面值中的數(shù)值超出了范圍,那么前導(dǎo)零將被忽略,后面的數(shù)值將被當(dāng)作十進(jìn)制數(shù)值解析。

      八進(jìn)制字面量在嚴(yán)格模式下是無效的,會(huì)導(dǎo)致支持該模式的JavaScript引擎拋出錯(cuò)誤。

      十六進(jìn)制字面值的前兩位必須是0x,后跟任何十六進(jìn)制數(shù)字(0~9及A~F)。其中,字母 A~F 可以大寫,也可以小寫。

      由于保存浮點(diǎn)數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此ECMAScript會(huì)不失時(shí)機(jī)地將浮點(diǎn)數(shù)值轉(zhuǎn)換為整數(shù)值。顯然,如果小數(shù)點(diǎn)后面沒有跟任何數(shù)字,那么這個(gè)數(shù)值就可以作為整數(shù)值來保存。同樣地,如果浮點(diǎn)數(shù)值本身表示的就是一個(gè)整數(shù)(如1.0),那么該值也會(huì)被轉(zhuǎn)換為整數(shù)。

      數(shù)值對(duì)象

      與字符串值對(duì)應(yīng)著一個(gè)字符串對(duì)象一樣,數(shù)值也有對(duì)應(yīng)的數(shù)值對(duì)象,即Number。

      數(shù)值同樣可以直接調(diào)用數(shù)值對(duì)應(yīng)的屬性:

      print((6).toString()); // 6

      注意,本例中,數(shù)值需要添加括號(hào),否則句點(diǎn)會(huì)被認(rèn)為是小數(shù)點(diǎn)。

      Number的使用與String的使用類似,可以進(jìn)行類型轉(zhuǎn)換、創(chuàng)建數(shù)值對(duì)象等。

      在進(jìn)行類型轉(zhuǎn)換時(shí),如果轉(zhuǎn)換不成功,即Number返回NaN,使用數(shù)值對(duì)象時(shí)也是如此。

      var a = Number('x'); print(typeof a, a);       // number NaN var b = new Number('x');  print(typeof b, b);       // object [Number: NaN]

      Number具有5個(gè)特殊屬性(只讀),即:

      • MAX_VALUE :正數(shù)最大值,再大就會(huì)變成Infinity

      • MIN_VALUE :正數(shù)最小值,再小就會(huì)變成0

      • NaN :Not a Number

      • NEGATIVE_INFINITY :負(fù)無窮大,即-Infinity

      • POSITIVE_INFINITY :正無窮大,即Infinity

      print(Number.MAX_VALUE);         // 1.7976931348623157e+308 print(Number.MIN_VALUE);         // 5e-324 print(Number.NaN);               // NaN print(Number.NEGATIVE_INFINITY); // -Infinity print(Number.POSITIVE_INFINITY); // Infinity

      Infinity

      當(dāng)數(shù)字運(yùn)算結(jié)果超過了JavaScript所能表示數(shù)字上限時(shí),結(jié)果為一個(gè)特殊的無窮大值(Infinity),如果是負(fù)數(shù)的值超過了JavaScript所能表示的負(fù)數(shù)范圍,則結(jié)果為-Infinity。

      當(dāng)運(yùn)算結(jié)果無限接近于零并比JavaScript能表示的最小值還小的時(shí)候(下溢),結(jié)果為0,當(dāng)負(fù)數(shù)發(fā)生下溢時(shí),結(jié)果為-0,正數(shù)發(fā)生下溢,則結(jié)果為+0。

      JavaScript預(yù)定義了全局變量Infinity和NaN,它們都是只讀變量。

      由于內(nèi)存的限制,ECMAScript并不能保存世界上所有的數(shù)值。ECMAScript能夠表示的最小數(shù)值保存在Number.MIN_VALUE中——在大多數(shù)瀏覽器中,這個(gè)值是5e-324;能夠表示的最大數(shù)值保存在Number.MAX_VALUE中——在大多數(shù)瀏覽器中,這個(gè)值是1.7976931348623157e+308。如果某次計(jì)算的結(jié)果得到了一個(gè)超出JavaScript數(shù)值范圍的值,那么這個(gè)數(shù)值將被自動(dòng)轉(zhuǎn)換成特殊的Infinity值。具體來說,如果這個(gè)數(shù)值是負(fù)數(shù),則會(huì)被轉(zhuǎn)換成-Infinity(負(fù)無窮),如果這個(gè)數(shù)值是正數(shù),則會(huì)被轉(zhuǎn)換成Infinity(正無窮)。

      如果某次計(jì)算返回了正或負(fù)的Infinity值,那么該值將無法繼續(xù)參與下一次的計(jì)算,因?yàn)镮nfinity不是能夠參與計(jì)算的數(shù)值。要想確定一個(gè)數(shù)值是不是有窮的(換句話說,是不是位于最小和最大的數(shù)值之間),可以使用isFinite()函數(shù)。

      NaN

      NaN是一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用于表示一個(gè)本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。

      對(duì)于NaN,要記住的一點(diǎn)是,只要運(yùn)算中出現(xiàn)NaN,結(jié)果就一定是NaN,就算是"NaN*0"這樣的運(yùn)算,也一樣是NaN。只要對(duì)NaN運(yùn)行比較運(yùn)行,結(jié)果就一定是false,就算"NaN==NaN"/"NaN!=NaN"等,都是false。

      要判斷一個(gè)值是否為NaN,可以使用isNaN()函數(shù):

      print(isNaN(NaN));  // true print(isNaN(0/0));  // true

      在基于對(duì)象調(diào)用isNaN()函數(shù)時(shí),會(huì)首先調(diào)用對(duì)象的valueOf()方法,然后確定該方法返回的值是否可以轉(zhuǎn)換為數(shù)值。如果不能,則基于這個(gè)返回值再調(diào)用toString()方法,再測(cè)試返回值。

      也可以使用x!==x來判斷x是否為NaN,只有在x為NaN的時(shí)候,這個(gè)表達(dá)式的值才為true。

      inFinite()

      isFinite函數(shù)用于判斷一個(gè)數(shù)是否為“正?!钡臄?shù)值:

      print(isFinite(Number.NaN));               // false print(isFinite(Number.NEGATIVE_INFINITY)); // false print(isFinite(Number.POSITIVE_INFINITY)); // false

      除了以上3個(gè)特殊值外,其他值的結(jié)果都為true

      假如x是一個(gè)普通數(shù)值,則有:

      x/0 = Infinity x%0 = NaN x/Infinity = 0 x%Infinity = x 0/0 = NaN 0%0 = NaN Infinity/x = Infinity Infinity%x = NaN Infinity/Infinity = NaN Infinity%Infinity = NaN

      完整輸出如下:

      print(0 / 0);           // NaN print(3 / 0);           // Infinity print(Infinity / 0);    // Infinity print(0 % 0);           // NaN print(3 % 0);           // NaN print(Infinity % 0);    // NaN ---------- print(0 / 4);           // 0 print(3 / 4);           // 0.75 print(Infinity / 4);    // Infinity print(0 % 4);           // 0 print(3 % 4);           // 3 print(Infinity % 4);    // NaN ---------- print(0 / Infinity);           // 0 print(3 / Infinity);           // 0 print(Infinity / Infinity);    // NaN print(0 % Infinity);           // 0 print(3 % Infinity);           // 3 print(Infinity % Infinity);    // NaN

      負(fù)零與正零

      負(fù)零與正零的值相等,不過畢竟帶有符號(hào),在一些運(yùn)算中會(huì)有符號(hào)方面的差別,比如:

      var zero = 0;  var negz = -0;

      此時(shí),zero 等于 negz , 但1/zero 卻不等于 1/negz。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)