c語言中,double的精度比float高,為什麼不都用double呢?

時間 2021-05-06 08:41:55

1樓:

如果是做3D實時渲染的話,你不能保證做專案的時候,你可以用最新的圖形api,如果gpu就是有些地方不讓你用雙精度,除了幹瞅著還能怎麼。

而且用得到雙精度的地方實在不多,顏色數值一般沒必要這麼高,很多時候16位就夠了。

光柵化過程深度值勉強需要,但是如果真的是很大的場景,何不用logz呢,很大又有很多遮蓋的場景……盜夢空間遊戲版?星球大戰的死星?這種場合太少見了。

2樓:宇佐見蓮子

其他回答說了記憶體問題。我提另乙個原因。例如你在呼叫GPU進行運算,單精度和雙精度對於特定GPU的算力完全不同。有些GPU閹割了雙精度,會導致效率奇低。

3樓:Aman

因為空間很寶貴,包括記憶體和磁碟以及網路流量等等。

乙個 double 占用的空間是乙個 float 的 2 倍。當資料量足夠大的時候,翻一翻可是相當可觀的。在精度允許的情況下,我們總是使用更節省空間的 float。

甚至在特定領域,還會使用更小的浮點型別。例如,在 GPU 程式設計上 half 型別就很常見,作為比 float 還小一半的浮點型別,它在你能看到的所有遊戲大作中發光發熱。雖然精度與 double 不可同日而語,但應用在畫素著色上,人眼根本無法分辨那極其微小的亮度變化。

所以,適用才是硬道理。

4樓:裴浩

絕大多數情況下不會去用float。但是呢,在某些特定場景,比如你對計算結果的精度要求不高,而記憶體緊張的情況下,是可以用float的,畢竟float只佔4位元組,double佔8位元組。

至於你看到書上用float,據我的經驗,這些寫書的老古董都是從上古時代過來的,在他們那個記憶體沒這麼大的時代,用float節省記憶體是正常的。

C 中超出精度double型別的值為什麼會出現這種現象?

邱昊宇 真心沒那麼複雜。問 比 3 小的最大 double 究竟是多少?答 是 std nextafter 3.0,2.0 比如 double maxBelowThree std nextafter 3.0 2.0 auto uniqueDigits std numeric limits max d...

c語言中 include stdio h , 的作用是什麼,為什麼不能去掉 ?

nullptr 表示這是預處理語句,由預處理器來處理。至於為啥是 這就是語法設計的事情了,也可以設計成 include等等。C C 標準已經規定是 開頭了,編譯器都是以檢測這個符號來做判定了,所以你如果想去掉,那麼就要去改C C 的編譯器,做乙個屬於你自己的編譯器。 程式設計思維 號表示這一行後面的...

C語言中的選擇排序?

郭建波 選擇排序的過程 陣列排序前 7 23 12 4 33 21 2 17 13 9 第一輪迴圈 2 23 12 4 33 21 7 17 13 9 第二輪迴圈4 12 23 33 21 7 17 13 9 第三輪迴圈7 23 33 21 12 17 13 9 第四輪迴圈9 33 21 12 17...