float型转化int型问题!!!!!
float f1 = 0.01f;
f1 = f1 * 100;
//float f2=1.0f;
int a = (int)f1;
这样a就为0;但如果把第三行的注释去掉以后,a就等于1了。为什么?????还有为什么a会为0;
[解决办法]
float是16位的,表达0.01的时候,实际上是0.0099999998,*100也不到1
不过我在VS2008的环境下运行,a是等于1的
[解决办法]
不要将0.01写到代码中
用scanf或者cin>>读取 f1值。
[解决办法]
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
[解决办法]
你加一个容差,编译器对浮点都是不准确的,f1 = f1 * 100;改为f1 = (f1+1e-6) * 100;试试