十年專注于品牌網(wǎng)站建設 十余年專注于網(wǎng)站建設_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網(wǎng)絡微信公眾號
      掃一掃打開百恒網(wǎng)絡微信小程序

      百恒網(wǎng)絡

      南昌百恒網(wǎng)絡

      ECMAScript Number類型進行詳細講解(一)

      百恒網(wǎng)絡 2012-02-07 5579

      Number類型

      Number類型應該是ECMAScript中最令人關注的數(shù)據(jù)類型了,這種類型使用IEEE754格式來表示整數(shù)和浮點數(shù)值(浮點數(shù)值在某些語言中也被稱為雙精度數(shù)值)。為支持各種數(shù)值類型,ECMA-262定義了不同的數(shù)值字面量格式。

      最基本的數(shù)值字面量格式是十進制整數(shù),十進制整數(shù)可以像下面這樣直接在代碼中輸入:

      var intNum=55; //整數(shù)

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

      var octalNuml=070; //八進制的56

      var octalNum2=079; //無效的八進制數(shù)值——解析為79

      var octalNum3=08; ,/無效的八進制數(shù)值——解析為8

      十六進制字面值的前兩位必須是Ox,后跟任何十六進制數(shù)字(O~9及A~F)。其中,字母A~F可以大寫,也可以小寫。如下面的例子所示:

      var hexNuml=OxA; //十六進制的10

      var hexNum2=Oxlf; //十六進制的31

      南昌網(wǎng)絡公司百恒網(wǎng)絡前端開發(fā)工程師提醒企業(yè)網(wǎng)站建設技術人員,雖然數(shù)值可以用八進制或十六進制來表示,但在進行算術計算時,所有以八進制和十六進制表示的數(shù)值最終都將被轉換成十進制數(shù)值。

      1.浮點數(shù)值

      所謂浮點數(shù)值,就是該數(shù)值中必須包含一個小數(shù)點,并且小數(shù)點后面必須至少有一位數(shù)字。雖然小數(shù)點前面可以沒有整數(shù),但我們不推薦這種寫法。以下是浮點數(shù)值的幾個例子:

      var floatNuml=1.1;

      var floatNum2=O.l;

      var floatNum3=.1; //有效,但不推薦

      南昌網(wǎng)站優(yōu)化公司百恒網(wǎng)絡前端開發(fā)工程師提醒技術人員由于保存浮點數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此ECMAScript會不失時機地將浮點數(shù)值轉換為整數(shù)值。顯然,如果小數(shù)點后面沒有跟任何數(shù)字,那么這個數(shù)值就可以作為整數(shù)值來保存。同樣地,如果浮點數(shù)值本身表示的就是一個整數(shù)(如1.0),那么該值也會被轉換為整數(shù),如下面的例子所示:

      var floatNuml=1.; //小數(shù)點后面沒有數(shù)字——解析為l

      var floatNum2=10.0; //整數(shù)——解析為10

      對于那些極大或極小的數(shù)值,可以用e表示法(即科學計數(shù)法)表示的浮點數(shù)值表示。用e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪。ECMAScript中e表示法的格式也是如此,即前面是一命數(shù)值(可以是整數(shù)也可以是浮點數(shù)),中間是一個大寫或小寫的字母E,后面是10的冪中的指數(shù),該冪值將用來與前面的數(shù)相乘。下面是一個使用e表示法表示數(shù)值的例子:

      var floatNum=3.125e7; //等于31250000

      在這個例子中,使用e表示法表示的變量floatNum的形式雖然簡潔,但它的實際值則是31250000。在此,e表示法的實際含義就是“3.125乘以l07'’。

      也可以使用e表示法表示極小的數(shù)值,如0.00000000000000003,這個數(shù)值可以使用更簡潔的3e-17表示。在默認情況下,ECMASctipt會將那些小數(shù)點后面帶有6個零以上的浮點數(shù)值轉換為以e表示法表示的數(shù)值(例如,0.0000003會被轉換成3e-7)。

      浮點數(shù)值的最高精度是17位小數(shù),但在進行算術計算時其精確度遠遠不如整數(shù)。例如,0.1加0.2的結果不是0.3,而是0.30000000000000004。這個小小的舍入誤差會導致無法測試特定的浮點數(shù)值。例如:

      if(a+b==0.3){//不要做這樣的測試!

      alert("You got 0.3.”);

      }

      南昌做網(wǎng)站公司百恒網(wǎng)絡前端開發(fā)工程師總結:在這個例子中,我們測試的是兩個數(shù)的和是不是等于0.3。如果達兩個數(shù)是0.05和0.25,或者是0.15和0.15都不會有問題。而如前所述,如果這兩個數(shù)是0.1和0.2,那么測試將無法通過。因此,永遠不要測試某個特定的浮點數(shù)值。

      關于浮點數(shù)值計算會產(chǎn)生舍入誤差的問題,有一點需要明確:這是使用基于IEEE754數(shù)值的浮點計算的通病,ECMAScript并非獨此一家;其他使用相同數(shù)值格式的語言也存在這個問題。

      2.數(shù)值范圍

      由于內(nèi)存的限制,ECMAScript并不能保存世界上所有的數(shù)值。ECMAScript能夠表示的最小數(shù)值保存在Number.MIN VALUE中——在大多數(shù)瀏覽器中,這個值是Se-324;能夠表示的最大數(shù)值保存在Number.MAX VALUE中——在大多數(shù)瀏覽器中,這個值是1.7976931348623157e+308。如果某次計算的結果得到了一個超出JavaScript數(shù)值范圍的值,那么這個數(shù)值將被自動轉換成特殊的工nflnity值。

      具體來說,如果這個數(shù)值是負數(shù),則會被轉換成一工nfinity(負無窮),如果這個數(shù)值是正數(shù),則會被轉換成Infinity(正無窮)。

      如上所述,如果某次計算返回了正或負的工nfinity值,那么該值將無法繼續(xù)參與下一次的計算,因為工nfinity不是能夠參與計算的數(shù)值。要想確定一個數(shù)值是不是有窮的(換句話說,是不是位于 最小和最大的數(shù)值之間),可以使用isFinite()函數(shù)。這個函數(shù)在參數(shù)位于最小與最大數(shù)值之間時會返回true,如下面的例子所示:

      var result=Number.MAX_VALUE+Number.MAX_VALUE;

      alert (isFinite (result))j //false

      盡管在計算中很少出現(xiàn)某些值超出表示范圍的情況,但在執(zhí)行極小或極大數(shù)值的計算時,檢測監(jiān)控這些值是可能的,也是必需的。

      3.NaN

      NaN,即非數(shù)值(Nota Number)是一個特殊的數(shù)值,這個數(shù)值用于表示一個本來要返回數(shù)值的操作數(shù)未返回數(shù)值的情況(這樣就不會拋出錯誤了)。例如,在其他編程語言中,任何教值除以o都會導致錯誤,從而停止代碼執(zhí)行。但在ECMAScript中,任何數(shù)值除以0會返回NaN,因此不會影響其他代碼的執(zhí)行。

      NaN本身有兩個非同尋常的特點。首先,任何涉及NaIV的操作(例如NaN/10)都會返回NaN,這個特點在多步計算中有可能導致問題。其次,NaN與任何值都不相等,包括NaN本身。例如,下面的代碼會返回false:

      alert (NaN==NaN)j //false

      針對NaN的這兩個特點,ECMAScript定義了isN型壘函數(shù)。這個函數(shù)接受一個參數(shù),該參數(shù)可以是任何類型,而函數(shù)會幫我們確定這個參數(shù)是否“不是數(shù)值”。isNaN()在接收到一個值之后,會嘗試將這個值轉換為數(shù)值。某些不是數(shù)值的值會直接轉換為數(shù)值,例如字符串”10。或Boolean值。而任何不能被轉換為數(shù)值的值都會導致這個函數(shù)返回true。請看下面的例子:

      alert (isNaN (NaN))j //true

      alert(isNaN(10))j //false(10是一個數(shù)值)

      alert (isNaN(”10”)); //false(可以被轉換成數(shù)值10)

      ale‘‘(isNaN(”blue”)); //true(不能轉換成教值)

      alert (isNaN( true)); //false(可以被轉換成數(shù)值1)

      南昌網(wǎng)站制作公司百恒網(wǎng)絡前端開發(fā)工程師總結,這個例子測試了5個不同的值。測試的第一個值是NaN本身,結果當然會速回t rue。然后分別測試了數(shù)值10和字符串”10”,結果這兩個測試都返回了false,因為前者本身就是數(shù)值,而后者可以被轉換成數(shù)值。但是,字符串”blue”不能被轉換成數(shù)值,因此函數(shù)返回了true。由于Boolean值 true可以轉換成數(shù)值1,因此函數(shù)返回false。

      希望對廣大站長或網(wǎng)站建設公司或從事企業(yè)網(wǎng)站建設的團隊有所幫助,如對此不太理解的,可以與南昌網(wǎng)絡公司百恒網(wǎng)絡技術部聯(lián)系。我們很高與廣大站長和網(wǎng)站建設公司技術人員分享我們的技術和經(jīng)驗。

      專業(yè)專注于南昌網(wǎng)站建設,為用戶提供高品質的網(wǎng)絡產(chǎn)品和優(yōu)質的服務是我們始終追求的目標!


      400-680-9298,0791-88117053
      掃一掃關注百恒網(wǎng)絡微信公眾號
      掃一掃打開百恒網(wǎng)絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      国产成人精品视频一区二区不卡| 精品国产乱码久久久久久浪潮 | 国产成人yy精品1024在线| 亚洲国产精品无码久久SM| 久久精品这里只有精99品| 日韩精品无码永久免费网站| 国产乱码精品一区三上 | 日韩色图在线观看| 国产精品久久久久9999赢消| 精品国产性色无码AV网站| 91精品国产麻豆福利在线| 精品亚洲成a人片在线观看少妇| 久久99精品福利久久久| 久久99精品国产99久久6男男| 国产系列高清精品第一页| 精品一久久香蕉国产线看播放| 人妻少妇精品视频专区| 无码AV动漫精品一区二区免费| 人妻无码久久精品| 拍国产真实乱人偷精品| 拍国产乱人伦偷精品视频| 麻豆人妻少妇精品无码专区| 无码日韩精品一区二区人妻 | 久久精品无码专区免费青青| 热re99久久精品国99热| 亚洲视频精品在线| 99re6这里只有精品| 在线观看日韩精品| 亚洲精品午夜视频| 精品久久久中文字幕人妻| 亚欧人成精品免费观看| 国产夫妇精品自在线| 国产成人精品日本亚洲18图| 国产精品久久久久9999高清| 国产在视频线精品视频2021| 四虎永久在线精品波多野结衣| 国产精品亚洲精品青青青| 久久91精品国产91| 国产欧美精品123区发布| 精品久久伦理中文字幕| 国产日产精品_国产精品毛片 |