繁体   English   中英

如何将float转换为double?

[英]How does converting float to double work?

double可以表示float可以表示的每个值。

将float转换为double会简单地通过加0扩展尾数并通过填充符号位来扩展指数部分吗?

我在http://www.binaryconvert.com/index.html上测试了一些数据。 它以这种方式工作。 但是我没有找到有关转换的任何正式定义。 转换中是否有任何极端情况无法通过这种方式工作?

这与C无关。 它唯一的保证是从floatdouble转换必须保留该值。

因此,您实际上是在询问(大概是) IEEE-754 至少有几种方法不适合您的描述:

  1. 单精度和双精度的指数有不同的偏差。 因此,转换不仅需要符号扩展。

  2. 非正常数字需要特殊处理(它们变为正常数字)。

  3. NaN还可能需要特殊处理-区分信号和安静的NaN取决于尾数的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM