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

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

我應(yīng)該使用double還是float?

我應(yīng)該使用double還是float?

C++
ibeautiful 2019-11-25 15:50:19
在C ++中使用一種代替另一種的優(yōu)缺點是什么?
查看完整描述

3 回答

?
精慕HU

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

如果您想知道真正的答案,則應(yīng)該閱讀 每位計算機科學(xué)家應(yīng)該了解的有關(guān)浮點算法的內(nèi)容。


簡而言之,盡管double允許其表示更高的精度,但是對于某些計算,它將產(chǎn)生更大的誤差?!罢_”的選擇是:根據(jù)需要使用盡可能多的精度,而不是更多,然后選擇正確的算法。


無論如何,許多編譯器都在“非嚴格”模式下進行了擴展浮點數(shù)學(xué)運算(即,使用硬件中可用的更寬泛的浮點類型,例如80位和128位浮點),這也應(yīng)予以考慮。在實踐中,您幾乎看不到任何速度差異 -無論如何它們都是硬件的本機。


查看完整回答
反對 回復(fù) 2019-11-25
?
婷婷同學(xué)_

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

除非您有其他特殊原因,否則請使用double。

也許令人驚訝的是,它是double(而不是float),是C(和C ++)中的“常規(guī)”浮點類型。標準數(shù)學(xué)函數(shù)(例如sinlog)將double用作參數(shù),并返回double。普通的浮點文字,例如在程序中編寫3.14時,其類型為double。不浮動。

在典型的現(xiàn)代計算機上,雙精度可以與浮點數(shù)一樣快,甚至更快,因此即使對于大型計算,性能通常也不是要考慮的因素。(而且這些操作可能需要很大的計算,否則性能甚至都不會進入您的視線。我的新i7臺式計算機可以在一秒鐘內(nèi)完成60億次double的乘法運算。)


查看完整回答
反對 回復(fù) 2019-11-25
?
汪汪一只貓

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

該問題沒有上下文,因此無法回答。以下是一些可能影響選擇的事項:

  1. 浮點數(shù),雙打和長雙打的編譯器實現(xiàn)。C ++標準規(guī)定:

    共有三種浮點類型:float,double和long double。double類型至少提供與float一樣高的精度,long long類型提供至少與double一樣高的精度。

    因此,這三個內(nèi)存大小可以相同。

  2. FPU的存在。并非所有的CPU都有FPU,有時會仿真浮點類型,有時不支持浮點類型。

  3. FPU體系結(jié)構(gòu)。IA32的FPU內(nèi)部為80位-32位和64位浮點數(shù)在負載時擴展到80位,并在存儲時減少。還有SIMD,它可以并行執(zhí)行四個32位浮點或兩個64位浮點。SIMD的使用未在標準中定義,因此需要編譯器進行更復(fù)雜的分析才能確定是否可以使用SIMD,或者需要使用特殊功能(庫或內(nèi)部函數(shù))。80位內(nèi)部格式的結(jié)果是,您可以根據(jù)將數(shù)據(jù)保存到RAM的頻率來獲得略有不同的結(jié)果(因此,精度會下降)。因此,編譯器不能特別好地優(yōu)化浮點代碼。

  4. 內(nèi)存帶寬。如果雙精度型需要比浮點型更多的存儲空間,那么讀取數(shù)據(jù)將需要更長的時間。那是天真的答案。在現(xiàn)代的IA32上,這完全取決于數(shù)據(jù)來自何處。如果它在L1高速緩存中,則只要數(shù)據(jù)來自單個高速緩存行,則負載可以忽略不計。如果它跨越多個緩存行,則開銷很小。如果來自L2,則需要花費更長的時間,如果位于RAM中,則需要更長的時間,最后,如果位于磁盤上,則將花費大量時間。因此,選擇float或double的重要性不如使用數(shù)據(jù)的方式重要。如果要對大量順序數(shù)據(jù)進行小的計算,則最好使用小的數(shù)據(jù)類型。在較小的數(shù)據(jù)集上進行大量計算將使您可以使用較大的數(shù)據(jù)類型,而不會產(chǎn)生重大影響。如果你' 重新隨機訪問數(shù)據(jù),則數(shù)據(jù)大小的選擇并不重要-數(shù)據(jù)加載在頁面/緩存行中。因此,即使您只想要RAM中的一個字節(jié),也可以傳輸32個字節(jié)(這在很大程度上取決于系統(tǒng)的體系結(jié)構(gòu))。最重要的是,CPU / FPU可以是超標量的(又名流水線)。因此,即使負載可能要花費幾個周期,CPU / FPU可能仍在忙于做其他事情(例如乘數(shù)運算),從而將負載時間隱藏到一定程度。

  5. 該標準不對浮點值強制執(zhí)行任何特定格式。

如果您有規(guī)格,那么它將指導(dǎo)您進行最佳選擇。否則,將無法使用什么東西。


查看完整回答
反對 回復(fù) 2019-11-25
  • 3 回答
  • 0 關(guān)注
  • 1577 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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