搜索
查看: 2244|回复: 8
打印 上一主题 下一主题

习题 小数加法运算

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-7 23:49:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
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;
}


最佳答案

查看完整内容

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

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

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

这和处理器没关系
因为double和float类型都是小数的一种近似表示,详细的规定可以参考ISO/IEEE 745
所以运算出来也是一种近似值
7#
发表于 2013-2-12 12:54:06 | 只看该作者
小数计算问题
8#
发表于 2013-2-12 12:57:14 | 只看该作者
用%f有什么问题吗?

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

QQ截图20130212125148.png

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

QQ截图20130212125201.png
9#
发表于 2013-2-12 13:40:13 | 只看该作者
我爱小熊 发表于 2013-2-12 12:57
用%f有什么问题吗?

你的参数b那去了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表