[英]How does converting float to double work?
double可以表示float可以表示的每个值。
将float转换为double会简单地通过加0扩展尾数并通过填充符号位来扩展指数部分吗?
我在http://www.binaryconvert.com/index.html上测试了一些数据。 它以这种方式工作。 但是我没有找到有关转换的任何正式定义。 转换中是否有任何极端情况无法通过这种方式工作?
这与C无关。 它唯一的保证是从float
到double
转换必须保留该值。
因此,您实际上是在询问(大概是) IEEE-754 。 至少有几种方法不适合您的描述:
单精度和双精度的指数有不同的偏差。 因此,转换不仅需要符号扩展。
非正常数字需要特殊处理(它们变为正常数字)。
NaN还可能需要特殊处理-区分信号和安静的NaN取决于尾数的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.