使用整数运算添加浮点

时间:2013-05-09 13:42:31

标签: c++ c floating-point floating-point-precision

我正在编写代码来枚举C ++中的浮点加法,使用整数加法和移位来完成一些作业。我用Google搜索了主题,我可以通过调整指数然后添加来添加浮点数。问题是我找不到合适的算法来舍入结果。现在我正在使用截断。它显示了0.000倍量级的错误。但是当我尝试将这个加法器用于像fft这样的复杂计算时,它会显示出巨大的错误。 所以我现在正在寻找的是我的机器用于舍入浮点结果的精确算法。如果有人可以为此目的发布一些链接,那就太好了。

提前致谢。

1 个答案:

答案 0 :(得分:2)

最常见的是,如果要舍入的位表示的值小于要保留的最小位的一半,则它们向下舍入,与截断相同。如果它们代表超过一半,则它们向上舍入,从而在最小保留位的位置添加一个。如果它们恰好是一半,则如果最小保留位为零则向下舍入,如果该位为1则向上舍入。这被称为“圆到最近,与偶数相关。”

这假设你已经完成了所有的比特,在算术的过程中还没有丢失。如果你不能保留所有的比特,有一些技术可以跟踪有关它们的足够信息以进行正确的舍入,例如保持三个比特称为保护,圆形和粘滞位。