一个很简单的c语言问题

#include"stdio.h"main(){floatqian=1.4;floati=0,j=100;i=qian*j;printf("%f",i);}输出为什么是1... #include "stdio.h"
main()
{
float qian=1.4;
float i=0,j=100;
i=qian*j;
printf("%f",i);
}
输出为什么是139.9998而不是140?
qian=1.3、1.7等数字的时候就没问题,就1.4就不对了
展开
 我来答
龚炜林
2012-03-01 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:561万
展开全部
你好!这个问题就是浮点数的存储问题了,单精度浮点数一般来说是以4个字节存储的,一共是32位,关于存储你可以查下IEEE745标准就知道了。上述问题就是存储和运算的问题,以单精度方式存储的数据不是十分准确的值,计算机运算又是利用内存的,也就是使用那段32位的内容的二进制编码进行的,所以可能造成偏差,于是就有个精度问题。具体的建议暂时不用深究,只需记住会有这类情况发生。但是你这里你得注意,问题不是你的计算结果,是输出的时候你没有规定精度,所以计算机按照默认精度输出,那就产生了误差,如果你改为printf("%-5.2f",i);精度为两位小数点,那么就不会有误差的。所以建议尽量规定允许的精度。
ml1badboy
2012-03-01 · TA获得超过979个赞
知道小有建树答主
回答量:927
采纳率:100%
帮助的人:422万
展开全部
单精度实型有效数字5到6位
printf("%f",i);
改成printf("%6f",i);
试试
或者把j改成int的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaoxiong0602
2012-03-01 · TA获得超过149个赞
知道答主
回答量:97
采纳率:0%
帮助的人:59.4万
展开全部
计算机内部浮点数值的问题,实际上浮点型1.4在计算机中并不是精确的1.4000000000000000。
不光是1.4,其他浮点型数字都是不精确的。1.3 1.7 没有显示小数点后额外的数是因为小数点后的余数小,无法看到而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sgxwxlq
2012-03-01 · TA获得超过218个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:235万
展开全部
不会呀,怎么可能,我这里都是输出140.000000,你看看你的编译器设置有没有什么不对的地方,或者其他
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
娱酒沉歌乐平生
2012-03-01
知道答主
回答量:31
采纳率:0%
帮助的人:18.4万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式