JavaScript基礎——數值與數學

來源:互聯網
上載者:User

標籤:技術   ber   其他   字元   十六進位   情況下   進位   根據   科學   

數值中的坑:

  1、JavaScript內部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。所以1與1.0是相同的同一個數,在JavaScript語言底層中根本沒有整數。但在位元運算時JavaScript自動將64位浮點數轉換為32位整數後再運算。

  2、浮點數不是精確的值,所以涉及小數的比較時要特別小心。尤其和 0.3 相關的如。0.1 + 0.2 = 0.30000000000000004而不是0.3,所以0.1 + 0.2 ===0.3 返回false。

  3、數值精度:國際標準IEEE754,JavaScript浮點數的64個二進位位,從最左邊開始是這樣組成的--->第一位:符號位,0為正數,1為負數;第2位到第12位(共11位):指數部分;第13位到第64位(共52位):小數部分(有效數字)。符號位決定了一個數的正負,指數部分決定了數值的大小,小數部分決定了數值的精度。

  指數部分一共有11個二進位位,因此大小範圍就是0到2047。IEEE 754 規定,如果指數部分的值在0到2047之間(不含兩個端點),那麼有效數位第一位預設總是1,不儲存在64位浮點數之中。也就是說,有效數字這時總是1.xx...xx的形式,其中xx..xx的部分儲存在64位浮點數之中,最長可能為52位。因此,JavaScript 提供的有效數字最長為53個二進位位。

   精度最多隻能到53個二進位位,這意味著,絕對值小於等於2的53次方的整數,即-253到253,都可以精確表示大於2的53次方的數值,都無法保持精度(無論是運算還是儲存)。由於2的53次方是一個16位的十進位數值,所以簡單的法則就是,JavaScript 對15位的十進位數都可以精確處理。

  4、數值範圍:根據標準,64位浮點數的指數部分的長度是11個二進位位,意味著指數部分的最大值是2047(2的11次方減1)。也就是說,64位浮點數的指數部分的值最大為2047,分出一半表示負數,則 JavaScript 能夠表示的數值範圍為21024到2-1023(開區間),超出這個範圍的數無法表示。

  如果一個數大於等於2的1024次方,那麼就會發生“正向溢出”,即 JavaScript 無法表示這麼大的數,這時就會返回Infinity

  如果一個數小於等於2的-1075次方(指數部分最小值-1023,再加上小數部分的52位),那麼就會發生為“負向溢出”,即 JavaScript 無法表示這麼小的數,這時會直接返回0。

  5、科學記號標記法:以下兩種情況,JavaScript 會自動將數值轉為科學計數法表示,其他情況都採用字面形式直接表示。(1)小數點前的數字多於21位。(2)小數點後的零多於5個。

特殊數值:

  1、0:JavaScript分 +0、-0、0三種,但是本身大小相等。幾乎所有場合整零和負零都當作正常0,唯一區別的場合是 +0、-0做分母。除以正零得到+Infinity,除以負零得到-Infinity。但是0/0得NaN。NaN與任何數(包括它自己)的運算,得到的都是NaN。

  2、NaN:表示Not a Number,"非數字"。主要出現在將字串解析成數字出錯的場合。NaN資料類型屬於Number。NaN不等於任何值,包括它本身。

  3、Infinite:無窮,有正負之分。

Number的屬性:

  

Number的方法:

  - parseInt() ---1、將字串轉換成整數,parseInt的傳回值只有兩種可能,要麼是一個十進位整數,要麼是NaN。對於那些會自動轉為科學計數法的數字,parseInt會將科學計數法的表示方法視為字串,因此導致一些奇怪的結果。如果字串以0x0X開頭,parseInt會將其按照十六進位數解析。如果字串以0開頭,將其按照10進位解析。

    2、進位轉換(其他進位轉成十進位):parseInt方法還可以接受第二個參數(2到36之間),表示被解析的值的進位,返回該值對應的十進位數。預設情況下,parseInt的第二個參數為10,即預設是十進位轉十進位。如果第二個參數是0undefinednull,則直接忽略。先進行第一步計算轉換為數字,在進行第二步按進位計算。

  - parseFloat() --- parseFloat方法用於將一個字串轉為浮點數。如果字串符合科學計數法,則會進行相應的轉換,變成小數。

  - isNaN() --- 判斷一個值是否為NaN

  -isFinite() --- 表示某個值是否為正常的數值。

 

 

JavaScript基礎——數值與數學

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.