[英]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.