【发布时间】:2010-10-19 15:13:04
【问题描述】:
在我的 C++ 程序中,我需要从外部字节序列中提取一个 64 位浮点数。有什么方法可以确保在编译时双精度为 64 位?我应该使用其他类型来存储数据吗?
编辑:如果您正在阅读本文并且实际上正在寻找一种方法来确保以 IEEE 754 格式存储,请查看以下 Adam Rosenfield 的答案。
【问题讨论】:
-
你到底在做什么?您是否正在寻找一种完全可移植的方式来获取 8 个字节并将它们解释为 IEEE 标准的 64 位浮点数?
-
@David:是的,这正是我正在做的。我在某处发现了一些说 C++ 浮点数和双精度数采用 IEEE-754 格式的东西。我不确定双打是否总是使用相同的精度并想为其添加检查。
-
现在我不确定我的原始信息是否正确。这里有什么约定?我应该删除这个问题并添加另一个关于从 IEEE-754 转换的问题吗?
-
IIUC: 1) IEEE 754 不受标准保证(否则,我看不到 std::numeric_limits::is_iec559 的要点) 2) is_iec559 == true 不保证二进制表示.
-
Eric: numeric_limits::is_iec559 的存在是因为 numeric_limits 被设计为可扩展的,例如,对于 is_iec559==false 的用户定义 BigFloat 类型可能存在 numeric_limits
特化.但是,您是对的,内置浮点数可能不是 IEEE 754。
标签: c++ types precision compiler-construction ieee-754