C 我可以用双重初始化类型浮点的变量

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

本文关键字:变量 类型 初始化 我可以      更新时间:2023-10-16

真正无法找到太多。虽然当我使用double初始化类型float的变量时,编译器似乎并没有抱怨。

double a = 1.0;
float b = a;

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

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

4.8浮点转换

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

创建变量的大小不同。" float = 4个字节"answers" double = 8字节"。因此,这里重要的是两种类型的值范围不同。如果使用小值AS 1.0,则不应影响工作流程。

顾名思义,双重的精度为2倍[1]。通常,双重的精度为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

也许您会失去精确性。