2013-05-09 30 views
0

我正在編寫用於在C++中使用整數加法枚舉浮點加法和轉換某些作業的代碼。我已經搜索了這個主題,我可以通過調整指數然後添加來添加浮點數。問題是我無法找到合適的算法來舍入結果。現在我正在使用截斷。它顯示了0.000×幅度的錯誤。但是當我嘗試將這個加法器用於像fft這樣的複雜計算時,它顯示出巨大的錯誤。 所以我現在要找的是我的機器用於四捨五入浮點結果的確切算法。如果有人可以爲此目的發佈一些鏈接,那將是非常好的。使用整數運算的浮點加法

在此先感謝。

回答

2

最常見的情況是,如果四捨五入的位表示一個值小於要保留的最小位的一半,則它們向下舍入,與截斷相同。如果它們代表超過一半,則向上取整,因此在最小保留位的位置上增加一個。如果它們只有一半,那麼如果最小保留位爲零,則向下舍入,如果該位爲1,則向上舍入。這被稱爲「圓到最近,甚至連結」。

這假設你已經把所有的東西都捨去了,在算術過程中沒有丟失任何東西。如果你不能保留所有的位,有一些技術可以跟蹤足夠的信息來做正確的四捨五入,比如保持三位稱爲guard,round和sticky位。