读书人

浮点型和整型变量转化的有关问题

发布时间: 2012-02-26 20:19:45 作者: rapoo

浮点型和整型变量转化的问题。
#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的精度范围不一样,在数据转换的时候可能发生了进位)

读书人网 >C语言

热点推荐