2010-09-30 164 views

回答

1

int指定爲float變量對於小數值基本可以。但是,根據C#標準,float值只有7位數的精度。所以,如果整數大於9 999 999,則會出現舍入誤差。

+1

尾數的精度以二進制數字表示,7位十進制數字只是一個近似值,所以精度開始降低的閾值強調*不是9,999,999 *。每個絕對值高達2 ** 24(16,777,216)的整數都可以精確地存儲在單精度浮點變量中。 – 2010-09-30 02:38:37

0

對於足夠小的數字可以避免舍入錯誤。還有一些還可以,就像前幾個發生舍入錯誤的地方一樣,他們在再次舍入時會被取消。

但是,您爲什麼要這麼做?唯一的影響是添加可能出錯的東西(不知何故,整個數字不是整數)並減慢速度。雖然float和int之間的效率差異非常小(對於數學來說,移動它們對於兩者來說都具有相同的效率,因爲它們在內部都是相同的大小),我會懷疑任何人強制整數執行浮點或小數值作業不成熟的優化(雖然不一定,在某些情況下我自己也是這樣做的),但強迫浮動執行整數工作似乎是過早的悲觀,除非在某個地方它實際上充當浮動。