搜索
查看: 1549|回复: 11
打印 上一主题 下一主题

计算机傻了吧。。。。。。。

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-6 21:49:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
int main()
{
    float a,b,c;
    a=5.2;
    b=3.1;
    c=a+b;
    printf("%f",c);


    system("pause");
    return 0;
}


为何计算结果为8.299999,不是明摆着是8.3嘛。

沙发
发表于 2013-8-6 22:47:13 | 只看该作者
float型在内存占32位,有些十进制数在转化为2进制数时会精度损失
板凳
发表于 2013-8-6 22:54:14 | 只看该作者
因为计算机中的浮点数和你理解的实数不是一种东西
地板
发表于 2013-8-7 07:39:53 | 只看该作者
兄弟你好犀利
5#
发表于 2013-8-7 10:29:12 | 只看该作者
IEEE754精确规定 0.1 + 0.2 =0.30000000000000004
6#
发表于 2013-8-9 18:17:15 | 只看该作者
因为浮点型数据不能完全被精确存储,有些可以,有些是不可以的。
7#
发表于 2013-8-9 18:19:15 | 只看该作者
因为浮点型数据(float和double)都不能保证可以精确的存储一个小数
8#
发表于 2013-8-11 19:32:25 | 只看该作者
浮点数不等于实数
9#
发表于 2013-8-27 16:27:44 | 只看该作者

浮点数不等于实数
10#
发表于 2013-9-16 18:57:31 | 只看该作者
把printf("%f",c);改成printf("%.1f",c);
.1就显示一位小数  .2就显示两位小数,,依次类推
11#
发表于 2014-3-14 19:44:21 | 只看该作者
代码如下:#include <stdio.h>
#include <stdlib.h>
int main()
{
    double a,b,c;
    a=5.2;
    b=3.1;
    c=a+b;
    printf("%lf",c);
    system("pause");
    return 0;
}
12#
发表于 2014-3-17 17:09:10 | 只看该作者
这样吧:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     double a,b,c;
  6.     a=5.2;
  7.     b=3.1;
  8.     c=a+b;
  9.     printf("%lf",c);
  10.     system("pause");
  11.     return 0;
  12. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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