首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-26 
浮点型和整型变量转化的问题。#includestdio.h main(){floatfa,fbintia,ibfa41.01iafa*100fbfa*10

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

热点排行