可能重复:
Real numbers - how to determine whether float or double is required?
我正在尝试检查从double到float的转换是否会导致精度损失。显然,我可以进行转换并将float转换回double并将其与原始值进行比较。我很好奇是否有更直接的方式。
答案 0 :(得分:9)
转换为浮动和返回通常是最有效的解决方案;在大多数常见架构中,它只需要几条指令,每条指令的延迟为几个周期。这也具有既简单又正确的优点。
在没有浮点硬件支持的平台上,您可以通过拆分数字来检查更有效,并检查指数和有效位数是否适合单精度,但这是一个相对不常见的角落 - 这种情况更容易出错,并且无法移植到使用不同FP格式的平台上。
答案 1 :(得分:0)
浮点数有两部分,即尾数和指数。双精度位分配给两个部分。将double赋给float会丢弃尾数位,这样可以减少精度数字,这是预期的。但是,如果双指数不适合浮点指数,那么浮点数将是一个垃圾值。