如下9行代码,输出结果说明了问题:
#include <stdio.h>
int main() {
float f = 0.01;
int i = 1800;
printf("%d/n", (int)(f*i));
printf("%f/n", f*i);
return 0;
}
输出:
17
18.000000
编译上述程序时在float f = 0.01语句处会出现一个warning: truncation from 'double' to 'float'
改为:float f = 0.01f; 就没有waringing了,但是输出结果仍然是17 18.000000.
换成:double f = 0.01; 没有warning,输出结果是18 18.000000
换成:double f = 0.01f; 没有warning,输出结果是17 18.000000