将浮点数拆分为两个其他数字的总和,而不会出现舍入错误

use*_*759 2 floating-point split floating-accuracy

我不知道是否有可能做到这一点,但我需要将两个数字之和的浮点数分开...

例如假设x是一个浮点数,我们希望将其拆分为 x = I + f,其中I是有符号整数部分,而f是有符号小数部分,两个浮点数我想这样的分裂可以完全实现(即没有fp错误我的意思是).

我想知道是否有可能以某种方式分割x =(I-1.0)+(f + 1.0),即没有浮点舍入误差.

我已经实现了我自己的分割x = I + f然后求和并添加1.0我有第二个分割我呈现,但基本上它受浮点舍入误差这样的操作.

Pas*_*uoq 6

(使用双精度示例)

我想知道是否有可能以某种方式分割x =(I-1.0)+(f + 1.0),即没有浮点舍入误差.

没有机会为所有值获得这样的分割.拿0x1.0p-60,其中不可分割的部分是0.0,小数部分是0x1.0p-60.f + 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"浮点余数"精确地在整数部分和小数部分之间进行分割,这是微妙的区别fmod,但没有办法将接近0的数字拆分为浮点和1.0和另一个值.