C语言:float型与double型的转换问题

main(){inta;floatb,c;a=12;b=365.2114;c=(float)a+_b;printf("a=%d,b=%f,c=%f\n",a,b,c);}... main()
{int a;float b,c;
a=12;b=365.2114;
c=(float)a+_b;
printf("a=%d,b=%f,c=%f\n",a,b,c);
}
为什么输出的时候b不是365.211400,而是365.211395?
展开
 我来答
独立探索者
2010-06-15 · TA获得超过190个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:77.6万
展开全部
float精度不高,保存小数的位没double多。假如float用8位保存小数点后的数据,精度是2的负8次方,也就是1/256 的精度,而double比float多,比如说是16位,就是1/65536 的精度。

需要明白的是,浮点数表示的数是有限的,不可能表示所有的实数,由于精度的原因,会有偏差。

你可以换成double型,显示的结果就会更精确了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式