1

将带有双精度的文件转换为浮点数后,编译器 (MSCV2005) 会警告代码常量中从double到的转换,例如float

...
float r;

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

Even q1, q2are both floats0.5似乎被视为double.

如何适应这种行为,以便所有代码内常量都被视为floats?

4

2 回答 2

9

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

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

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

无后缀的浮动常量的类型为double。如果以字母for为后缀,则为F类型float。如果以字母lor为后缀,则为L类型long double

您问题中的常量没有后缀, type 也是如此double

于 2014-10-17T11:19:44.740 回答
5

只需f在常量之后添加:

float f = 0.5f;
于 2014-10-17T11:19:57.520 回答