0

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

将 float 转换为 double 是否只需通过添加 0 来扩展尾数并通过填充符号位来扩展指数部分?

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

4

1 回答 1

6

这与 C 关系不大;它唯一的保证是从floatto转换double必须保留该值。

所以你真的在问(大概)IEEE-754。您的描述至少有几种方式不成立:

  1. 单精度和双精度的指数具有不同的偏差。所以转换需要的不仅仅是符号扩展。

  2. 非正规数需要特殊处理(它们变成普通数)。

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

于 2017-07-17T17:34:27.067 回答