将具有双精度数的文件转换为浮点数后,编译器(MSCV2005)会警告从double
到float
的转换,如代码常量,如
...
float r;
r = (q1 + q2) * 0.5;
...
即使q1, q2
这两个浮点数0.5
似乎都被视为double
。
如何调整此行为,以便将所有代码内常量视为float
s?
答案 0 :(得分:9)
使用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
。
答案 1 :(得分:5)
只需在常量后添加f
:
float f = 0.5f;