一个很简单的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就不对了 展开
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就不对了 展开
5个回答
展开全部
你好!这个问题就是浮点数的存储问题了,单精度浮点数一般来说是以4个字节存储的,一共是32位,关于存储你可以查下IEEE745标准就知道了。上述问题就是存储和运算的问题,以单精度方式存储的数据不是十分准确的值,计算机运算又是利用内存的,也就是使用那段32位的内容的二进制编码进行的,所以可能造成偏差,于是就有个精度问题。具体的建议暂时不用深究,只需记住会有这类情况发生。但是你这里你得注意,问题不是你的计算结果,是输出的时候你没有规定精度,所以计算机按照默认精度输出,那就产生了误差,如果你改为printf("%-5.2f",i);精度为两位小数点,那么就不会有误差的。所以建议尽量规定允许的精度。
展开全部
单精度实型有效数字5到6位
printf("%f",i);
改成printf("%6f",i);
试试
或者把j改成int的
printf("%f",i);
改成printf("%6f",i);
试试
或者把j改成int的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机内部浮点数值的问题,实际上浮点型1.4在计算机中并不是精确的1.4000000000000000。
不光是1.4,其他浮点型数字都是不精确的。1.3 1.7 没有显示小数点后额外的数是因为小数点后的余数小,无法看到而已。
不光是1.4,其他浮点型数字都是不精确的。1.3 1.7 没有显示小数点后额外的数是因为小数点后的余数小,无法看到而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会呀,怎么可能,我这里都是输出140.000000,你看看你的编译器设置有没有什么不对的地方,或者其他
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询