| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 750 人关注过本帖
标题:C语言输出问题
只看楼主 加入收藏
yangsenu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-8-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
C语言输出问题
#include<stdio.h>
void main()
{
float a;
a=30.456;
printf("a=%f",a);
}
输出结果为:30.455999


请问为什么不是30.456000???
搜索更多相关主题的帖子: C语言 
2009-08-25 13:15
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:1 
不知道为什么 高手来解答啊
2009-08-25 13:42
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
不知道为什么 高手来解答啊
2009-08-25 13:44
cdk626100
Rank: 1
等 级:新手上路
帖 子:3
专家分:6
注 册:2009-8-25
收藏
得分:6 
这是因为计算机上都用二进制存储数据,你把30.456000换算成二进制或许就明白了
2009-08-25 14:02
yangsenu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-8-25
收藏
得分:0 
不能进行进制转换啊
2009-08-25 18:54
yangsenu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-8-25
收藏
得分:0 
请问各位谁知道十进制的30.456000转换成二进制是多少?
2009-08-25 22:36
liyonghelpme
Rank: 2
等 级:论坛游民
帖 子:3
专家分:11
注 册:2009-8-26
收藏
得分:4 
十进制有限小数换算成二进制小数,未必就是有限的,所以在转换过程中,精度损失了。
比如十进制0.1换算成二进制就不是有限小数。
但是二进制有限小数显然可以换算成有限十进制数。
即由高精度向低精度转换,存在风险。
2009-08-26 00:54
liyonghelpme
Rank: 2
等 级:论坛游民
帖 子:3
专家分:11
注 册:2009-8-26
收藏
得分:3 
三进制转化成十进制
比如三进制0.1,转化为十进制为1/3,为无限小数.
进制转化存在无限,有限的变化.
2009-08-26 00:58
liyonghelpme
Rank: 2
等 级:论坛游民
帖 子:3
专家分:11
注 册:2009-8-26
收藏
得分:4 
计算机只能处理有限的问题,对于无限是没有办法的,可能有些编译器做了处理,会使一些连续9的数字处理了,比如0.1,但是这也只是认为处理了,并没有改变问题实质.
怎么判断可不可以转化成有限小数呢?
首先是转化方法:
小数部分采用乘法处理:十进制小数部分不断乘以要转化的进制,每次取整数部分,作为每位的值,这个过程有没有终点,在于存不存在某一步能恰好使结果为零即     十进制小数部分*进制=整数
2009-08-26 01:08
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:2 
回复 楼主 yangs
改为:
printf("a=%.3f\n",a);
看看输出多少?
2009-08-26 01:25
快速回复:C语言输出问题
数据加载中...
 
   



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

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