可能重复: 实数-如何确定需要浮点数还是双精度? 我正在尝试检查将双精度转换为浮点数是否会导致精度损失。显然,我可以进行转换,然后将浮点数转换回双精度并将其与原始值进行比较。我想知道是否有更直接的方法。
转换为float类型再转回来通常是最高效的解决方案;在大多数常见的架构上,它只需要几个指令,每个指令的延迟时间都只有几个周期。这种方法不仅简单而且正确。在没有浮点数硬件支持的平台上,你可以通过拆分数字并检查指数和有效位是否适合于单精度来更有效地进行检查,但这是一个相对不常见的边界情况,而且这种方法更容易出错,也不能移植到使用不同FP格式的平台。
浮点数有两个部分,即尾数和指数。双精度浮点数在这两个部分上分配了更多的位数。将双精度浮点数赋给浮点数会丢失尾数位,从而使您获得更少的精度数字,这是可以预料的。但是,如果双精度浮点数的指数不适合浮点数的指数,则浮点数将成为垃圾值。