首页 文章

返回浮点类型是否完全符合IEEE-754的函数?

提问于
浏览
3

我想编写一个函数来检查 floatdoublelong double 是否完全符合IEEE-754格式 . 我的意思是:

我认为 std::numeric_limits<T>::is_iec559 对应于此,但它在我的Linux 64位上返回 true long double ,其中 sizeof(long double) = 16 bytes 但内部以 80-bit 英特尔格式编码 . 那怎么办呢?

1 回答

  • 1

    如果 std::numeric_limits<T>::is_iec559 为真,则 T 遵守标准 .

    如果系统使用80位作为其内部寄存器,只要最终舍入结果最接近使用无限位数的参考结果,这就没问题 . 也就是说,添加或删除一个ulp将使您远离引用 .

    通过使用所有可表示的数字运行所有可能的操作并与使用多位的引用进行比较,很难检查这一点 .

    您需要对 std::numeric_limits 和实现它的库有信心 .

相关问题