搜索
查看: 1150|回复: 10
打印 上一主题 下一主题

啊哈C30页练习第一题,编译出错,请指教!

[复制链接]
楼主
发表于 2014-3-9 16:02:19 | 显示全部楼层
  printf("%f",g)少分号
沙发
发表于 2014-3-9 21:10:32 | 显示全部楼层
本帖最后由 rosynirvana 于 2014-3-9 21:12 编辑
李掌柜 发表于 2014-3-9 18:38
除了少了个分号,还有一外隐藏错误,
代码:
    a=1.2;

对于这个程序来说,在数学上11.400000和11.4又没区别,所以没必要

真要说的话,保证精确的写法是
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.      int a,b,c,d,g;
  6.     a=12;
  7.     b=23;
  8.     c=34;
  9.     d=45;
  10.     g=a+b+c+d;
  11.     printf("%d.%d",g/10, g%10);

  12.         system("pause");
  13.         return 0;
  14. }
复制代码

才可以保证精确

%.1f是做了个rounding,自欺欺人的写法罢了
板凳
发表于 2014-3-9 23:17:14 | 显示全部楼层
李掌柜 发表于 2014-3-9 22:30
这是为了格式一致,而无非对错~~
参数  a=1.2;
         b=2.3;

看看你自己的回复
这是第一次回复
还有一外隐藏错误,


这是第二次回复
这是为了格式一致,而无非对错~~

参数  a=1.2;

a在上面的代码中是变量,而不是参数

关键的浮点数陷阱不说,强调什么美观
学得深入一点再来和别人争论吧
地板
发表于 2014-3-10 00:05:15 | 显示全部楼层
李掌柜 发表于 2014-3-9 23:33
和你讨纶一点意思都木有~~
答案是有很多种的~~
观点不同解法也不同~~

对不起,以你表现出来的水准来说,还真算不上什么讨论,只能是单方面告诉你正确答案罢了
答案有多种多样,不错
但是一层里面说“隐藏错误”,另一层说“无非对错”,所以你想表达的是“这是错的”,还是“这是对的”呢
你的观点解法是自相矛盾的,还谈什么观点不同解法不同呢?

“这种级别的加减法会有浮点数陷阱”?
更简单的都会有浮点数陷阱,还是论坛上一直有人问的
另外你能解释清我所谓“浮点数陷阱”是什么吗?

不是我死板,而是你的自信太莫名了
5#
发表于 2014-3-10 13:29:19 | 显示全部楼层
李掌柜 发表于 2014-3-10 00:20
那你弄个加减法浮点的例子出来看看罗~
我水准很菜的,也不敢说我精通这门语言~~

加减法有浮点陷阱的例子,整个论坛有很多问的
比如 http://bbs.ahalei.com/thread-2305-1-6.html

别回避问题
一层里面说“隐藏错误”,另一层里面说“无非对错”
你要说是对还是错?

格式问题?小数没写成最简形式?
我第二个回复明确说了
如果不去深究,那么11.400000和11.4数学上等价,所以可以说是没有问题了,不用改了
如果要写成最简形式,还不如用整数模拟,理由就是要避开浮点数陷阱
%1f这种写法,只是掩盖了问题而已
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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