如何在 C++ 中启用“roundties toaway”舍入模式?

问题描述 投票:0回答:1

我正在尝试使用舍入到最近、舍入到远离模式在 C++17 中执行浮点运算。在 cppreference.com 上搜索,我发现有四种舍入模式可用,包括舍入到最接近的值 (

FE_TONEAREST
)。不过,我没有找到关于
FE_TONEAREST
模式的打破平局规则的信息。

我通过实验发现,至少在 GCC 上,

FE_TONEAREST
模式是使用 round-ties-to-even 规则实现的。是否可以将决胜规则改为平局胜负?如果是,我该怎么做?如果没有,是否有一个库可以使用 round-tie-to-away 规则实现浮点?

提前致谢。

c++ rounding
1个回答
0
投票

这些

gesetround
参数的含义在相关部分中如何表述实现定义或多或少是一个缺陷,ISO仅声明这些宏在支持的情况下被定义,而在7.12.9最近的整数函数中为round定义的最近值.

lround 和 llround 函数将它们的参数四舍五入到最接近的 整数值,将中间情况舍入到远离零的位置,无论 当前的舍入方向。如果舍入值超出范围 返回类型的范围,数值结果未指定,并且 可能会出现域错误或范围错误。

对于 FE_TONEAREST 情况

nearbyint()
/
rint()
应该以类似
round
的方式操作,半情况总是远离零。

© www.soinside.com 2019 - 2024. All rights reserved.