搜索
查看: 256|回复: 4
打印 上一主题 下一主题

怎么结果是8.299999

[复制链接]
跳转到指定楼层
楼主
 楼主| 发表于 2020-5-12 22:47:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     float   a,b,c;
  6.     a=5.2;
  7.     b=3.1;
  8.     c=a+b;
  9.     printf("%f",c);
  10.     system("pause");
  11.     return 0;
  12. }

复制代码

沙发
发表于 2020-5-13 13:23:12 | 只看该作者
你这个是小数精度问题,小数加法都会这样。

点评

那可以提高精准度啊?!用double 代码我发下面啦  发表于 2020-5-13 13:42
板凳
发表于 2020-5-13 13:41:25 | 只看该作者
试试这个:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    double a,b,c;           //double 比 float 更精准
    a=5.2;
    b=3.1;
    c=a+b;
    printf("%.1f\n",c);     //%.1f表示保留1位小数,格式为%.需要保留的位数f
                                 //此处用来避免出现输出8.300000的情况
    system("pause");
    return 0;
}
地板
发表于 2020-5-14 21:06:22 | 只看该作者
关于上述问题,建议你将float的值乘以100000先存到一个long long的类型里[长整形],然后计算,再把结果除以100000.0[记住一定要有(点0),不然就被取整了],试试?
若成功,请设置最优答案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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