我正在为一些作业编写使用整数加法和移位在 C++ 中枚举浮点加法的代码。我用谷歌搜索了这个主题,我可以通过调整指数然后添加来添加 float 。问题是我找不到合适的算法来四舍五入结果。现在我正在使用截断。它显示大约 0.000 倍大小的误差。但是当我尝试使用这个加法器进行像 fft 这样的复杂计算时,它显示出巨大的错误。 所以我现在正在寻找的是我的机器用于舍入浮点结果的确切算法。如果有人可以为此目的发布一些链接,那就太好了。
提前致谢。
最佳答案
最常见的是,如果要四舍五入的位表示的值小于要保留的最小位的一半,则它们向下舍入,与截断相同。如果超过一半,则向上舍入,从而在保留的最小位的位置加一。如果它们恰好是一半,则如果保留的最小位为零则向下舍入,如果该位为一则向上舍入。这称为“舍入到最近,关系到偶数”。
这假定您拥有要四舍五入的所有位,并且在进行算术运算的过程中没有丢失任何位。如果您不能保留所有位,可以使用一些技术来跟踪有关它们的足够信息以进行正确的舍入,例如维护称为保护位、舍入位和粘性位的三个位。
关于c++ - 使用整数运算的浮点加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463239/