如何将浮动转换成双重工作?

Joe*_*e C 0 c floating-point double ieee-754 single-precision

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

将浮点数转换为double只是通过加0来扩展尾数,并通过填充符号位来扩展指数部分吗?

我在http://www.binaryconvert.com/index.html上测试了一些数据.它以这种方式工作.但我没有找到转换的任何官方定义.转换是否有任何角落不能以这种方式工作?

Oli*_*rth 6

这与C几乎没有关系; 它唯一的保证是转换floatdouble必须保留价值.

所以你真的在询问(大概)IEEE-754.您的描述至少有几种方式不适用:

  1. 单精度和双精度的指数具有不同的偏差.因此,转换需要的不仅仅是签名扩展.

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

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

  • @JoeC - 如果指数为零且尾数不为零,那么它是非正规的. (2认同)