啊哈磊_编程从这里起步

标题: 习题 小数加法运算 [打印本页]

作者: sycamore1990    时间: 2013-2-7 23:49
标题: 习题 小数加法运算
5.2+3.1=?为何结果输出是8.299999而不是8.3呢?

#include <stdio.h>
int main()
{system("color c9");
float a,b,c;
a=5.2;
b=3.1;
c=a+b;
printf("%f",c);
   
    sleep(5000);
    return 0;
}



作者: 981013    时间: 2013-2-7 23:49
这似乎和处理器有关,干脆不要c这个变量了,改为printf("%f",a+b);
这样出来的结果就对了
PS:希望电脑不打印无效的0,可以把输出控制符%f改为%g
作者: 981013    时间: 2013-2-8 10:44
float默认就是小数点后6位
作者: sycamore1990    时间: 2013-2-8 11:11
981013 发表于 2013-2-8 10:44
float默认就是小数点后6位

那为什么不是8.300000呢。
作者: sycamore1990    时间: 2013-2-8 13:27
981013 发表于 2013-2-8 12:44
这似乎和处理器有关,干脆不要c这个变量了,改为printf("%f",a+b);
这样出来的结果就对了
PS:希望电脑不 ...

谢谢了!!!
作者: rosynirvana    时间: 2013-2-8 14:30
981013 发表于 2013-2-7 23:49
这似乎和处理器有关,干脆不要c这个变量了,改为printf("%f",a+b);
这样出来的结果就对了
PS:希望电脑不 ...

这和处理器没关系
因为double和float类型都是小数的一种近似表示,详细的规定可以参考ISO/IEEE 745
所以运算出来也是一种近似值
作者: 我爱小熊    时间: 2013-2-12 12:54
小数计算问题

作者: 我爱小熊    时间: 2013-2-12 12:57
用%f有什么问题吗?

QQ截图20130212125148.png (26.13 KB, 下载次数: 23)

QQ截图20130212125148.png

QQ截图20130212125201.png (2.12 KB, 下载次数: 18)

QQ截图20130212125201.png

作者: 李掌柜    时间: 2013-2-12 13:40
我爱小熊 发表于 2013-2-12 12:57
用%f有什么问题吗?

你的参数b那去了




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2