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

keil中,int向double赋值精密度出错,求解决

2012-06-23 
keil中,int向double赋值精度出错,求解决!#includereg51.hvoid main(){char cint idouble d16.8,t16.

keil中,int向double赋值精度出错,求解决!
#include<reg51.h>
void main()
{
char c;
int i;
double d=16.8,t=16.000000;

c=(int)d;
i=(int)d;
i=i-c; //char向int赋值,结果=0,没出错
i=(int)d;
d=d-i; //int向double赋值,结果为0.7999992,出错了
d=16.8;
d=d-c; //结果同上,出错
d=16.8;
d=d-t; //奇怪的是,这个结果也和上面一样出错
}

[解决办法]
就是float不行,float只有6-7位的精确度0.7999992刚好7位所以有出错的可能
keil里的double相当于float所以才出现你的情况啊
网上说要搞高精度的要自己找库用或者自己写程序实现

热点排行