当前位置:  开发笔记 > 编程语言 > 正文

C++舍入到FE_TONEAREST

如何解决《C++舍入到FE_TONEAREST》经验,为你挑选了1个好方法。

任何人都可以,请解释为什么舍入0.5FE_TONEAREST所赐0?它不应该给出"1"的结果吗?有没有办法来解决这个问题?

#include 
#include 
#include 

int main() {
    fesetround(FE_TONEAREST);
    std::cout << "Rounding 0.5 to nearest = " << std::rint(0.5) << std::endl;
    return 0;
}

coliru上的runnable代码:http://coliru.stacked-crooked.com/a/9c179ca56f251628



1> BoBTFish..:

FE_TONEAREST导致std::rint将halfway cases(±n.5)舍入到最接近的偶数整数值.0甚至.

如果您改为使用std::round此模式,则中途情况会向上"向上"(远离零),这将导致1.

请参阅文档std::rint.

Mathematica.SE解释了为什么你可能想要这种不寻常的舍入形式.(因此,您的数据不会全部向一个方向移动).

顺便说一句,C++提供了标准头文件的正确包装版本,并在std命名空间中添加了名称(虽然这在这里几乎不重要):通常#include 而不是#include .

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有