摘要:隨便逛了一下知乎和思否的博文,大都沒回答到點上。當比較和時,實際比較的是轉成進制,看上去是結果很明顯啦參考資料
隨便逛了一下知乎和思否的博文,大都沒回答到點上。
I.浮點數的二進制存儲采用 IEEE 754 規范來存儲浮點數:
1位【正負符號】+11位【指數】+52位【有效數字】,如下圖
由于0.1.toString(2)=0.0001100110011001100110011001100110011001100110011001101
所以
0.1 = 2^-4 * [1].1001100110011001100110011001100110011001100110011010
0.2 = 2^-3 * [1].1001100110011001100110011001100110011001100110011010
鐵律是52位有效數字,也就是:
0.1 = 2^-3 * 0.1100110011001100110011001100110011001100110011001101(0) 0.2 = 2^-3 * 1.1001100110011001100110011001100110011001100110011010 sum = 2^-2 * 1.0011001100110011001100110011001100110011001100110011(1)
由于有效數字變成了53位,根據IEEE754 rounding mode 的 Round to Nearest,若x在a和b之間,選擇最低有效位為零的值。
a = 2^-2 * 1.0011001100110011001100110011001100110011001100110011 x = 2^-2 * 1.0011001100110011001100110011001100110011001100110011(1) b = 2^-2 * 1.0011001100110011001100110011001100110011001100110100
當比較0.1+0.2 和 0.3時,實際比較的是
0.1 + 0.2 => 0:01111111101:0011001100110011001100110011001100110011001100110[100] 0.3 => 0:01111111101:0011001100110011001100110011001100110011001100110[011]
轉成10進制,看上去是:
0.1 + 0.2 => 0.300000000000000044408920985006... 0.3 => 0.299999999999999988897769753748...
結果很明顯啦
參考資料:
https://stackoverflow.com/que...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102151.html
摘要:吐槽一句,大二的專業課數字邏輯電路終于用在工作上了。,整數位為,且精度只到十分位,因此是。如果是不限精度的話,轉換后的二進制數應該是無限循環。再看一下百科給出的標準因此,的類型,最高的位是符號位,接著的位是指數,剩下的位為有效數字。 showImg(https://segmentfault.com/img/remote/1460000011902479?w=600&h=600); 用一...
摘要:寫在前面可能你會不相信,我是從玩中過來的,我覺得有必要記錄一下,這個坑還非踩不可為了說的清楚一點兒,我多鋪墊一點兒,先說說數組維度的理解引子老鐵們猜一猜長啥樣我猜你還沒到點我到底想說啥,還是一頭霧水,對吧哈哈別揍我,關子賣的挺大,我到底想說 寫在前面 可能你會不相信,我是從玩pytorch中過來的,我覺得有必要記錄一下,transpose這個坑還非踩不可,為了說的清楚一點兒,我多鋪墊一...
閱讀 3070·2021-11-22 13:54
閱讀 834·2021-11-04 16:08
閱讀 4463·2021-10-11 11:09
閱讀 3597·2021-09-22 16:05
閱讀 910·2019-08-30 15:54
閱讀 387·2019-08-30 15:44
閱讀 594·2019-08-30 14:05
閱讀 1014·2019-08-30 12:46