检查 C 中的 IEEE 754 浮点标准
确定 C 编译器是否遵循 IEEE 754 浮点标准通常通过以下方式完成编译器定义。然而,用于 C 的技术可能并不直接适用于 C 。
C 特定方法
幸运的是,C 提供了一种简单的方法来使用 numeric_limits 完成此检查class:
std::numeric_limits::is_iec559;
如果编译器使用 IEEE 754,则此表达式的计算结果为 true,否则为 false。可以对 float 类型执行类似的检查:
std::numeric_limits::is_iec559;
替代方法
作为 numeric_limits 方法的替代方法,您可以调整 Adam 对 C 响应的第二部分:
#include
int main() {
// Check for IEEE 754 compliance by checking for a finite number of float exponents.
if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
// Compiler uses IEEE 754.
} else {
// Compiler does not use IEEE 754.
}
}
此方法依赖于 IEEE 754 定义浮点数的特定指数范围这一事实。如果编译器的最大指数与整数的最大大小匹配,则很可能遵循 IEEE 754。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3