c++ - 使用整数运算的浮点加法

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

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

提前致谢。

最佳答案

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

这假定您拥有要四舍五入的所有位,并且在进行算术运算的过程中没有丢失任何位。如果您不能保留所有位,可以使用一些技术来跟踪有关它们的足够信息以进行正确的舍入,例如维护称为保护位、舍入位和粘性位的三个位。

关于c++ - 使用整数运算的浮点加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463239/

相关文章:

c - Linux 系统调用如何与文件系统交互

c++ - 如何将 float 舍入到上/下表示

mysql - 如何在 MySQL 数据库中存储精确的十进制坐标

python - 为什么/如何 (-1) ** 0.5 不准确?

c++ - C++ 中的循环依赖

c++ - 模板数据结构 - 访问从抽象类派生的模板类的 getter 和 setter

c++ - 在非常相似的方法之间共享代码

c++ - 收集 Outlook 联系人列表

c - 哪个C单元测试框架?

c - ZeroMemory 函数在 windows.h 中给我错误?