第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么浮點數(shù)不準確?

為什么浮點數(shù)不準確?

揚帆大魚 2019-05-22 13:47:02
為什么浮點數(shù)不準確?為什么有些數(shù)字在存儲為浮點數(shù)時會失去準確性?例如,十進制數(shù)9.2可以精確地表示為兩個十進制整數(shù)(92/10)的比率,兩者都可以用二進制(0b1011100/0b1010)精確表示。但是,存儲為浮點數(shù)的相同比率永遠不會完全等于9.2:32-bit "single precision" float: 9.1999998092651367187564-bit "double precision" float: 9.199999999999999289457264239899814128875732421875這樣一個看似簡單的數(shù)字如何在64位內(nèi)存中表達“太大” ?
查看完整描述

4 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

這不是一個完整的答案(mhlester已經(jīng)涵蓋了很多我不會復制的好地方),但我想強調一個數(shù)字的表示取決于你工作的基礎。

考慮分數(shù)2/3

在良好的基礎10中,我們通常會將其寫成類似的東西

  • 0.666 ...

  • 0.666

  • 0.667

當我們查看這些表示時,我們傾向于將它們中的每一個與分數(shù)2/3相關聯(lián),即使只有第一個表示在數(shù)學上等于分數(shù)。第二和第三表示/近似的誤差大約為0.001,實際上比9.2和9.1999999999999993之間的誤差差。事實上,第二個表示甚至沒有正確舍入!然而,我們沒有將0.666作為數(shù)字2/3的近似值的問題,所以我們不應該在大多數(shù)程序中如何逼近9.2。(是的,在某些程序中它很重要。)

數(shù)字基數(shù)

所以這里的數(shù)字基礎是重要的。如果我們試圖在基數(shù)3中代表2/3,那么

(2/3)10 = 0.2 3

換句話說,通過切換基數(shù),我們可以得到相同數(shù)字的精確有限表示!外賣是即使你可以將任何數(shù)字轉換為任何基數(shù),所有有理數(shù)在某些基礎上都有精確的有限表示,但在其他基數(shù)中沒有。

為了把這一點推到家里,讓我們看看1/2。盡管這個完全簡單的數(shù)字在基數(shù)10和2中具有精確表示,但它可能會讓您感到驚訝,它需要在基數(shù)3中重復表示。

(1/2)10 = 0.5 10 = 0.1 2 = 0.1111 ... 3

為什么浮點數(shù)不準確?

因為它們經(jīng)常是近似于在基數(shù)2中無法有限地表示的有理數(shù)(數(shù)字重復),并且通常它們近似于在任何基數(shù)中可能無法在有限多個數(shù)字中表示的實數(shù)(可能是無理數(shù))數(shù)。


查看完整回答
反對 回復 2019-05-22
?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

雖然所有其他答案都很好,但仍有一件事缺失:

這是不可能的代表無理數(shù)(如π, ,sqrt(2),log(3)等)精確!

這就是他們被稱為非理性的原因。世界上沒有多少比特存儲就足以容納其中一個。只有符號算術才能保持其精度。

雖然如果你將數(shù)學需求限制在有理數(shù),但只有精度問題變得易于管理。您需要存儲一對(可能非常大)整數(shù)ab保存分數(shù)所代表的數(shù)字a/b。所有算術都必須在分數(shù)上完成,就像在高中數(shù)學中一樣(例如a/b * c/d = ac/bd)。

當然,你仍然會遇到同樣的麻煩時pi,sqrt,logsin,等都有涉及。

TL; DR

對于硬件加速算術,只能表示有限數(shù)量的有理數(shù)。每個不可表示的數(shù)字都是近似的。無論系統(tǒng)如何,都不能表示某些數(shù)字(即無理數(shù))。


查看完整回答
反對 回復 2019-05-22
?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

有無數(shù)的實數(shù)(很多你不能枚舉它們),并且有無限多的有理數(shù)(有可能枚舉它們)。

浮點表示是有限的(就像計算機中的任何東西一樣),因此不可避免地會有很多很多數(shù)字無法表示。特別是,64位只允許您區(qū)分18,446,744,073,709,551,616個不同的值(與無窮大相比無差別)。按照標準慣例,9.2不是其中之一。對于某些整數(shù)m和e,可能具有m.2 ^ e形式的那些。


您可能會想出一個不同的計算系統(tǒng),例如10,其中9.2將具有精確的表示。但其他數(shù)字,比如1/3,仍然無法代表。


另請注意,雙精度浮點數(shù)非常準確。它們可以表示任意數(shù)字,范圍很廣,最多可包含15個精確數(shù)字。對于日常生活計算,4或5位數(shù)就足夠了。你永遠不會真正需要那些15,除非你想要計算你一生中的每一毫秒。


查看完整回答
反對 回復 2019-05-22
  • 4 回答
  • 0 關注
  • 1658 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號