2015-06-11 42 views
2

我不知道是否有可能做到這一點,但我需要拆分一個浮點數和兩個數字......將一個浮點數拆分爲兩個其他數字的總和,沒有舍入誤差

例如假設X是一個浮點數,我們希望在 X = I +分裂該F,其中是帶符號的整數部分,而˚F是簽名的小數部分,這兩個浮動數字我想這樣的分裂可以完全實現(即沒有FP錯誤我的意思)。

我想知道是否有可能分裂x =(I-1.0)+(f + 1.0),即沒有浮點舍入誤差。

我已經實現了我自己的拆分x = I + f然後求和並添加1.0我有第二個分割我介紹,但基本上它受浮點舍入誤差這種操作影響。

回答

6

(使用雙精度的例子)

我想知道是否有可能以某種方式分裂,X =(I-1.0)+(F + 1.0),即沒有浮點舍入誤差。

沒有機會獲得所有值的這種分割。取0x1.0p-60,其中不可或缺的部分爲0.0,小數部分爲0x1.0p-60f + 1.0是不精確的並且產生1.0,而I-1.0是準確的並且產生-1.0

這不僅僅是因爲f + 1.0中的加法是不精確的:浮點值使得當添加-1.0時產生0x1.0p-60不存在。

一個浮點值v總是可以準確地分割成的fmod(v, 1.0)v - fmod(v, 1.0),其中後者是整數,並且至少有另一種方式使用的整數部分和小數部分之間精確地分裂v總和IEEE 754 「Floating-point remainder」,它與fmod略有不同,但無法將接近0的數字拆分爲1.0和另一個值的浮點和。

相關問題