2009-11-09 74 views
1

我正在研究財務應用程序中的某些功能。所有數字在代碼和數據庫中均以小數表示,不會出現舍入誤差。但是,我遇到了一些性能問題,我正在考慮在自己的計算中切換到浮點數(浮點數/雙精度數)。這是基於四捨五入錯誤不是問題(我將不得不與客戶覈對)的假設。將表示從小數轉換爲浮點數 - 陷阱

但是,如果我進行此轉換,我想知道有哪些Pitfals。是否有一種表達式在使用浮點數進行計算時可能與使用小數計算的同一表達式有顯着不同?

回答

1

一個財務申請通常是不是使用浮點數的第一個例子。所以要小心。

無論如何,this article已經超過了你想知道的浮點數。它主要是關於D編程語言,但它有很多通用的知識。

+0

我知道使用浮點是有點非正統,但是,我的模塊中完成的一些計算已經完成使用浮點,因爲它們是不可行的使用十進制計算。最後,客戶(由數學家代表)將不得不決定。 – 2009-11-09 18:44:19

3

使用浮動的問題是,你會最終(可能)意外的精度問題。

如果您使用float,那麼您可以正確表示的最大值將是$ 167,772.16。如果你使用雙倍,那麼最大值將會更好(大約180萬億美元)。

您是否考慮過使用直線整數或長整數(32位或64位),代表0.01美元的間隔?這樣你可以更好地控制值,但性能應該很好。您也可以將它們包裝在一個結構中,以便與標準的數學運算符一起使用。