double可以表示浮点数可以表示的每个值。
将float转换为double只是通过加0来扩展尾数,并通过填充符号位来扩展指数部分吗?
我在http://www.binaryconvert.com/index.html测试了一些数据。它以这种方式工作。但我没有找到转换的任何官方定义。转换是否有任何不正常的情况?
答案 0 :(得分:6)
这与C几乎没有关系;唯一的保证是从float
转换为double
必须保留该值。
所以你真的在询问(大概)IEEE-754。至少有几种方法可以解释您的描述:
单精度和双精度的指数具有不同的偏差。因此,转换需要的不仅仅是签名扩展。
非正规数字需要特殊处理(它们成为正常数字)。
NaNs也可能需要特殊处理 - 区分信号和静音NaN取决于尾数的值。