将时间常量编译为浮点数

时间:2014-10-17 11:17:15

标签: c floating-point compile-time-constant

将具有双精度数的文件转换为浮点数后,编译器(MSCV2005)会警告从doublefloat的转换,如代码常量,如

...
float r;

r = (q1 + q2) * 0.5;
...

即使q1, q2这两个浮点数0.5似乎都被视为double

如何调整此行为,以便将所有代码内常量视为float s?

2 个答案:

答案 0 :(得分:9)

使用f后缀表示常量的类型为float

float q1 = ...;
float q2 = ...;
float r = (q1 + q2) * 0.5f;

标准(§6.4.4.2浮动常数)说:

  

未加浮动的常量类型为double。如果以fF为后缀,则为   输入float。如果以lL为后缀,则其类型为long double

问题中的常量没有后缀,因此类型为double

答案 1 :(得分:5)

只需在常量后添加f

float f = 0.5f;