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

标签 c++ floating-point ieee-754 standards-compliance extended-precision

我想写一个函数来检查 float , doublelong double完全符合 IEEE-754 格式。我的意思是:

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

最佳答案

如果std::numeric_limits<T>::is_iec559那么T为真符合标准。

如果系统为其内部寄存器使用 80 位,只要最终四舍五入的结果最接近使用无限位数的引用结果,这是可以的。也就是说,添加或删除一个 ulp 将使您远离引用。

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

您需要对 std::numeric_limits 有信心以及实现它的图书馆。

关于c++ - 返回浮点类型是否完全符合 IEEE-754 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17385843/

相关文章:

javascript - Javascript中 float 的最大精度(小数点后)是多少

c++ - libxml 解析 html - 未配对的标签损坏

c++ - 将 int 转换为 ASCII 字符

c++ - 如何在 Visual Studio 中禁用从父级继承的特定警告?

c++ - 即使数字在小数点后 4 位以内,也会在 EXPECT_FLOAT_EQ 上触发 googletest 错误

c - 将 C 字符串转换为 double 或从 double 转换时的奇怪行为

python - 如何从 Python 接口(interface)调试底层 C++ 库?

r - 接近1的数的幂

c - double 到 int 转换

matlab - 一元减号只是改变符号吗?