将带有双精度的文件转换为浮点数后,编译器 (MSCV2005( 会警告代码常量中从 double
到 float
的转换,例如
...
float r;
r = (q1 + q2) * 0.5;
...
即使q1, q2
都是漂浮物0.5
似乎被视为double
。
如何调整这种行为,以便将所有代码内常量视为float
?
使用 f
后缀表示常量的类型为 float
:
float q1 = ...;
float q2 = ...;
float r = (q1 + q2) * 0.5f;
标准(§6.4.4.2 浮动常量(说:
无后缀浮点常量的类型为
double
。如果后缀为字母f
或F
,则具有 键入float
。如果后缀为字母l
或L
,则其类型为long double
。
您问题中的常量没有后缀,因此类型为 double
.
只需在常量后添加f
:
float f = 0.5f;