繁体   English   中英

我可以用双精度类型初始化float类型的变量吗?

[英]c++ Can I Initialize a variable of type float with a double?

真的还不能找到很多有关此的信息。 虽然当我用double初始化float类型的变量时,编译器似乎没有抱怨

double a = 1.0;
float b = a;

它工作正常,但是我仍然很好奇是否可以这样做,并且/或者它是否安全?

(我在运行Windows的32位系统上)

4.8浮点转换

1浮点类型的prvalue可以转换为另一种浮点类型的prvalue。 如果可以在目标类型中准确表示源值,则转换的结果就是该准确表示。 如果源值在两个相邻的目标值之间,则转换的结果是这些值之一的实现定义选择。 否则,行为是不确定的。

创建的变量的大小不同。 “ float = 4字节”和“ double = 8字节”。 因此,这里重要的是两种类型的值范围都不同。 如果将较小的值用作1.0,则不会影响工作流程。

顾名思义,double的精度是float [1]的2倍。 通常,双精度数的精度为15个十进制数字,而浮点型为7。

计算位数的方法如下:

double has 52 mantissa bits + 1 hidden bit: log(253)÷log(10) = 15.95 digits

float has 23 mantissa bits + 1 hidden bit: log(224)÷log(10) = 7.22 digits

也许您会为此失去精度。

暂无
暂无

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

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