理解 IEEE 754:为什么 convertFromInt 和 convertToIntegerXXX 被归类为算术运算而不是转换运算?

问题描述

注意:了解 IEEE 754。请耐心等待。

IEEE 标准 754-2019:

5.4.1 算术运算

― formatOf-convertFromInt(int)

― intFormatOf-convertToIntegerXXX(source)

问题:为什么将 convertFromIntconvertToIntegerXXX 归类为算术运算而不是转换运算

更新。问题原因:

C11(强调):

5.2.4.2.2 浮动类型的特征

3 安静的 NaN 几乎可以传播到每个 _arithmetic 操作中而不会引发浮点异常;当作为算术操作数发生时,信号 NaN 通常会引发浮点异常。

根据 IEEE 754(2008 年和 2019 年)convertFromIntconvertToIntegerXXX 被归类为算术运算而不是转换运算。 >

根据 C11(强调):

F.4 浮点数到整数的转换

1 ... 否则,如果浮点数为无穷大或NaN或者浮点数的整数部分超出整数类型的范围,则''invalid' ' 引发浮点异常,结果值未指定。 ...

这里的 NaN 不是特化的,因此我们得出结论,这里的 NaNany NaN

还有 C11(强调):

F.3 运算符和函数

中的 lrint 和 llrint 函数提供 IEC 60559 转换 ... lint 和 llrint 函数可用于实现 IEC 60559 从浮点数到其他整数的转换格式

但是,根据 IEEE 754(2008 年和 2019 年)convertFromIntconvertToIntegerXXX 被归类为算术运算而不是转换运算

总的来说:我很困惑。我看到了 C11 和 IEEE 754 之间的矛盾。

代码示例:

l = (long)NAN; // shall lead to raising of FE_INVALID ??

这里:

  1. IEEE 754 说:convertToIntegerXXX 被归类为算术运算 AND C11 说:安静的 NaN 几乎在所有算术运算中传播,而不会引发浮点异常 .
  2. C11 说:如果浮点值是无穷大或 NaN 或者浮点值的整数部分超出整数类型的范围,则引发“无效”浮点异常`。

核心问题:l = (long)NAN 会导致 FE_INVALID 的提高吗?

额外问题:IEEE 754:convertFromIntconvertToIntegerXXX 是否被错误地归类为算术运算,而不是归类为转换运算? >

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)