如何判断双精度浮点数是否可以安全存储为单精度浮点数?

时间:2013-01-08 14:30:13

标签: c++ c floating-point

  

可能重复:
  Real numbers - how to determine whether float or double is required?

我正在尝试检查从double到float的转换是否会导致精度损失。显然,我可以进行转换并将float转换回double并将其与原始值进行比较。我很好奇是否有更直接的方式。

2 个答案:

答案 0 :(得分:9)

转换为浮动和返回通常是最有效的解决方案;在大多数常见架构中,它只需要几条指令,每条指令的延迟为几个周期。这也具有既简单又正确的优点。

在没有浮点硬件支持的平台上,您可以通过拆分数字来检查更有效,并检查指数和有效位数是否适合单精度,但这是一个相对不常见的角落 - 这种情况更容易出错,并且无法移植到使用不同FP格式的平台上。

答案 1 :(得分:0)

浮点数有两部分,即尾数和指数。双精度位分配给两个部分。将double赋给float会丢弃尾数位,这样可以减少精度数字,这是预期的。但是,如果双指数不适合浮点指数,那么浮点数将是一个垃圾值。

相关问题