中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中6.6f+1.3f !過程是怎樣的

發布時間:2022-01-06 16:28:51 來源:億速云 閱讀:150 作者:iii 欄目:云計算

這篇文章主要講解了“Java中6.6f+1.3f !過程是怎樣的”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中6.6f+1.3f !過程是怎樣的”吧!

Java中6.6f+1.3f !過程是怎樣的

打印結果是:7.8999996。什么個鬼,我的程序難道是個假程序嗎?

我們將 float 改為 double,在執行一下。

Java中6.6f+1.3f !過程是怎樣的

結果又變了,為:7.8999998569488525。

這是為什么呢?為什么和我預期的不一樣。

要說明這個問題,我們就要從計算機的底層的 0 和 1 說起。計算機只認識 0 和 1,所以所有的計算最終都會轉換成二進制的計算。

float 存儲原理      

CPU 表示浮點數由三部分組成 分為三個部分,符號位(sign),指數部分(exponent)和有效部分(fraction, mantissa)。 其中 float 總共占用 32 位,符號位,指數部分,有效部分各占 1 位,8 位,23 位。

Java中6.6f+1.3f !過程是怎樣的

對于實數,轉化為二進制分為兩部分,第一部分整數部分,第二部分是小數部分。整數部分計算二進制大家都很熟悉。

Java中6.6f+1.3f !過程是怎樣的

我們再看一個小數部分的計算過程。

將小數乘以2,取整數部分作為二進制的值,然后再將小數乘以2,再取整數部分,以此往復循環。

Java中6.6f+1.3f !過程是怎樣的

你會發現,上面的計算過程會發生循環,循環體為 1001。所以 0.6 轉化為二進制為 0.10011001…,6.6轉化為二進制為 110.10011001… 無限循環。

那么計算機該如何處理小數呢?人們是非常聰明的,所以想出了“規約化”和“指數偏移值”。

規約化      

規約化,就是我們通過規約化將小數轉為規約形式,類似我們用的科學計數法,就是保證小數點前面有一個有效數字。

在二進制里面,就是保證整數位是一個 1。那么 110.10011001 規約化后就為:1.1010011001*2^2

指數偏移值      

是指浮點數中指數部分的值,它的值為規約形式的指數值加上某個固定的值,float 的固定值為 127,計算方法是 2^e-1 其中的 e 為存儲指數部分的比特位數,前面提到的 float 為 8 位,double 為 11 位。在這里,因為是 2 的 2 次方,偏移值就是 127+2=129,轉換為二進制就是 10000001

拼接      

前面說了,采用二進制科學計數法計算浮點數的,有三個部分。符號位,指數部分,有效部。

6.6 為正數,符號位為 0,指數部分為偏移值的二進制 10000001,有效部分為規約形式的小數部分,為什么只取小數部分?因為整數肯定是 1,去掉了不會產生誤差。我們去取小數的前 23 位即 10100110011001100110011,最后拼接到一起即 01000000110100110011001100110011。 同理,我們可以計算出 1.3 的浮點數為 00111111101001100110011001100110。

Java中6.6f+1.3f !過程是怎樣的

感謝各位的閱讀,以上就是“Java中6.6f+1.3f !過程是怎樣的”的內容了,經過本文的學習后,相信大家對Java中6.6f+1.3f !過程是怎樣的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯昌县| 杭锦后旗| 盐城市| 斗六市| 安阳县| 台安县| 翁源县| 渝北区| 浦北县| 安多县| 平阴县| 岳普湖县| 长沙市| 怀仁县| 桂林市| 新宾| 新乡市| 霍城县| 正阳县| 泽库县| 延吉市| 丹寨县| 岫岩| 德清县| 博罗县| 红河县| 博乐市| 称多县| 芒康县| 黄石市| 闸北区| 江都市| 怀柔区| 凤山县| 永嘉县| 顺平县| 雷山县| 长丰县| 鲁甸县| 浙江省| 拉萨市|