浮点型和整型变量转化的问题。
#include "stdio.h "
main()
{
float fa,fb;
int ia,ib;
fa = 41.01;
ia = fa*100;
fb = fa*100;
ib = fb;
printf( "%d,%d ",ia,ib);
}
输出是4100,4101
why
[解决办法]
ia = fa*100;
处理过程如下:
1 fa为float , 100 默认为 int, 根据运算准则,
两个数据都被转换为 double 进行运算
(有疑问请查看 数据运算隐式转换规则,C++ Primer 中有讲)
2 计算得到的结果为 double 类型,
由于浮点数据的精度问题,结果是 4100.999832 ,
这个数据如果 ia = fa*100; 得到的就是 4100(小数部分直接舍去)
如果是通过 float 中转, 结果就是 4101(float和double的精度范围不一样,在数据转换的时候可能发生了进位)