色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

循環小數16精確到01是多少

林雅南2年前14瀏覽0評論

循環小數16精確到01是多少?

不管是什么數, 在計算機中最終都會被轉化為 0 和 1 進行存儲, 所以需要弄明白以下幾點問題

一個小數如何轉化為二進制浮點數的二進制如何存儲浮點數的二進制表示

首先我們要了解浮點數二進制表示, 有以下兩個原則:

整數部分對 2 取余然后逆序排列小數部分乘 2 取整數部分, 然后順序排列0.1 的表示是什么?

我們繼續按照浮點數的二進制表示來計算0.1 * 2 = 0.2 整數部分取 00.2 * 2 = 0.4 整數部分取 00.4 * 2 = 0.8 整數部分取 00.8 * 2 = 1.6 整數部分取 10.6 * 2 = 1.2 整數部分取 10.2 * 2 = 0.4 整數部分取 0…

所以你會發現, 0.1 的二進制表示是 0.00011001100110011001100110011……00110011 作為二進制小數的循環節不斷的進行循環.

這就引出了一個問題, 你永遠不能存下 0.1 的二進制, 即使你把全世界的硬盤都放在一起, 也存不下 0.1 的二進制小數.

浮點數的二進制存儲

Python 和 C 一樣, 采用 IEEE 754 規范來存儲浮點數. IEEE 754 對雙精度浮點數的存儲規范將 64 bit 分為 3 部分.

第 1 bit 位用來存儲 符號, 決定這個數是正數還是負數然后使用 11 bit 來存儲指數部分剩下的 52 bit 用來存儲尾數double-precision_floating-point_format

而且可以指出的是, double 能存儲的數的個數是有限的, double 能代表的數必然不超過 2^64 個, 那么現實世界上有多少個小數呢? 無限個. 計算機能做的只能是一個接近這個小數的值, 是這個值在一定精度下與邏輯認為的值相等. 換句話說, 每個小數的存儲(但是不是所有的), 都會伴有精度的丟失.

浮點數計算的問題

現在我們可以回顧你提出的問題

0.1 + 0.2 == 0.3

0.1 在計算機存儲中真正的數字是 0.10000000000000000555111512312578270211815834045410156250.2 是

0.2000000000000000111022302462515654042363166809082031250.3 是

0.299999999999999988897769753748434595763683319091796875

這就是為什么 0.1 + 0.2 != 0.3 的原因

至于 1.1 + 2.2 與之類似。