| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1905 人关注过本帖
标题:c语言中的浮点数运算的疑问
取消只看楼主 加入收藏
sy070904
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-23
结帖率:100%
收藏
 问题点数:0 回复次数:3 
c语言中的浮点数运算的疑问
#include <stdio.h>
int main (void)
{
    float f;
    printf ("please input a float number: \n");
    scanf ("%f",&f);
    printf ("The input is %f or %e.\n",f,f);
    return 0;
}
程序很简单,就是输入一个浮点数,再分别以小数和指数的形式输出来。但以小数输出来时,输出的值比原来的数大,结果如下:

C:\Dev-Cpp>082731104.exe
please input a floatnumber:
21.290000
The input is 21.290001 or 2.129000e+001.

请问这个是为什么呢?难道跟浮点数在计算机的存储方式有关系?
搜索更多相关主题的帖子: c语言 
2011-08-27 11:26
sy070904
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-23
收藏
得分:0 
以下是引用qq8801103在2011-8-28 15:18:15的发言:

楼主的运行结果好像不对  

你指的是 a floatnumber 吗?这是我修改过的。
2011-08-28 20:43
sy070904
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-23
收藏
得分:0 
以下是引用A13433758072在2011-8-27 23:23:27的发言:

这是内存误差,float的有效位数只有7位. 你要更高精度, 得采用double

书上说float至少能表示6位有效数字,这里的有效数字是指小数点后面的6位数吧?
2011-08-28 20:45
sy070904
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-23
收藏
得分:0 
以下是引用A13433758072在2011-8-27 23:23:27的发言:

这是内存误差,float的有效位数只有7位. 你要更高精度, 得采用double


如果我把f定义成double的话,输入值还是21.290000,但输出结果却是这样的:

C:\Dev-Cpp>201108282052.exe
please input a float number:
21.290000
The input is 0.000000 or 4.788294e-314.

如果我定义一个double,赋值21.290000,输出结果就是正确的了。

这是不是我的编译环境或者系统的问题?
2011-08-28 21:04
快速回复:c语言中的浮点数运算的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016383 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved