Javascript你不知道的那些事!(數字計算篇-變態篇)

來源:互聯網
上載者:User

標籤:

javascript:alert(0.1 + 0.2)  

如果看到這樣一道題你會怎麼思考了!大家肯定第一反應0.3,但是考慮到我已經這樣問了!那麼幼稚的答案我會專門寫篇文章嗎

然後人就開始折磨自己了會不會是 0.10.2呢

然後結果還是很拉風的

0.30000000000000004

再來0.1+0.7

0.7999999999999999

這是由於十進位到二進位的轉換導致的精度問題!因為電腦執行的是二進位算術,當一個十進位數不能準確的轉化著位元時,這種精度誤差就無法避免。如果對這簡單的原因描述還是迷惑的話,那就接著看文章後面的具體描述吧!

然後 有趣的再來個有趣的事情

parseInt(0.0000008)

這個結果是多少呢,你說是0,我說是8,你又說那是8

parseInt(0.08)

那麼這個你又說是8,但我又說是0。。。我估計你有淩亂了

 

 

 我縱裡尋她千百度。。。。然後找到的結果

很多語言在浮點和整形之間的運算`都有精度問題
只不過可能js的略風騷一些

 

認識javascript的浮點運算

 學過js的同學都知道,js中的數字都是用浮點數表示的,並規定使用IEEE 754 標準的雙精確度浮點數表示。

 IEEE 754 標準的浮點數簡介(呵呵,這可是大學裡學習的組成原因知識噢)

 IEEE 754 規定了兩種基本浮點格式:單精確度和雙精確度。

 IEEE單精確度格式具有24 位有效數字精度(包含符號號),並總共佔用32 位。

 IEEE雙精確度格式具有53 位有效數字精度(包含符號號),並總共佔用64 位。

說明: 基本浮點格式是固定格式,相對應的十進位有效數字分別為7位和17位。基本浮點格式對應的C/C++類型為float和double。

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.