在浮点环境中改变舍入模式有什么实际用途?

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

我正在尝试找到在 IEEE-754 浮点环境中更改舍入模式的好方法。

我主要从 C 和 C++ 代码的角度来看。在那里,可以使用

来完成
int fesetround(int round)

来自

"fenv.x"
(或 C++ 中的
<cfenv>
)的函数。

我能找到的最佳用途是将环境设置为

FE_TONEAREST
,如果出于某种不可预见的原因它不是默认值。

在这个问题中有人建议使用它来获得一些依赖于实现的字符串格式化行为。我个人认为这个答案完全错误,并且我相信更改格式化函数的舍入模式只会导致意外或完全错误的行为。

舍入模式改变的另一件事是函数:

nearbyint
rint
。但为什么你想使用它们,而不是分派到
floor
ceil
trunc
函数呢?

剩下的唯一有用的部分就是浮点运算中的局部差异。这能用在什么地方呢?我试图为此找到一些利基用途,但到目前为止我找不到任何用途。

c++ c floating-point ieee-754
2个回答
0
投票

轮询模式与下限和上限关系不大(后者轮询为整数)。我不知道 trunk

 函数。

在某些复杂的情况下,更改舍入规则可能很有用,其中理论研究表明特定规则比其他规则具有优势或提供了一些理想的保证。


0
投票
如果使用向上舍入和向下舍入模式计算相同的表达式,您将得到一个精确计算所在的区间。这用于区间算术,它可能是舍入模式最常见的用例。

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