搜索
查看: 1149|回复: 6
打印 上一主题 下一主题

小数与整数进行数学运算

[复制链接]
楼主
发表于 2014-1-20 16:12:07 | 显示全部楼层
本帖最后由 981013 于 2014-1-21 12:54 编辑
a824061840 发表于 2014-1-21 11:50
例如1.1*100=110,或者是1.1+100=101.0。结果有可能是小数,也可能是整数


整数与小数进行四则运算,得到的答案始终为小数
以如下一段代码为例
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int a=100,c=1;
  6.     float b=1.1;
  7.     printf("100+1.1=%d,100*1.1=%d\n",a+b,a*b);//错误!
  8.     printf("100+1.1=%f,100*1.1=%f\n",a+b,a*b);//正确,但看起来不大好看,也不是最精确
  9.     printf("100+1.1=%g,100*1.1=%g\n",a+b,a*b);//正确,也很好看
  10. system("pause");
  11. return 0;
  12. }
复制代码
第一个printf的输出为:100+1.1=1719664640,100*1.1=1079592550,显然都是错误的,原因是使用整型的格式控制符(%d)输出浮点型变量。
第二个printf的输出为:100+1.1=101.100000,100*1.1=110.000002,第一个完全正确,第二个存在一定的浮点舍入误差,%f默认保留6位小数。
第三个printf的输出为:100+1.1=101.1,100*1.1=110,%g是很好用的一个格式控制符,它会自动选择%f与%e(以指数形式输出浮点数,如2 e5即2*10^5)中较短的一种,并去掉末尾无效的0,且有时可以避免一些舍入误差,但注意%g也不是万能的,它只能用于浮点数的输出。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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