作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个浮点加法,由于值的大小不同,所以有点可能出错,所以相当多的有效数字被移出(甚至可能是所有数字)。在整个计算范围内,精度并不重要,只是结果大于或等于任意精度的结果(我在这里跟踪范围的末尾,并将其扩展 至少一定数量)。
所以我需要一个加法,在将加数带入相同的指数时进行四舍五入(即,如果设置了从加数移出的一位数字,加法应该发生在 nextval(denormalized_summand, +infinity)
。
是否有一种简单的方法来执行此加法(手动反规范化较小的加数并在其上使用 nextval
突然想到,但我怀疑这是否有效)?
最佳答案
可以将FPU舍入方式设置为“向上”,然后正常相加即可。
这是在 GNU 环境中的做法:
#include <fenv.h>
fesetround(FE_UPWARD);
如果您有 Microsoft 编译器,则等效代码为:
#include <float.h>
_set_controlfp(_RC_UP, _MCW_RC);
关于c++ - 浮点加法向上舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383623/
我是一名优秀的程序员,十分优秀!