| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 786 人关注过本帖
标题:求人帮忙,我这个程序是十进制转二进制,为什么小数部分不能处理
只看楼主 加入收藏
windwing817
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-6-12
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:6 
求人帮忙,我这个程序是十进制转二进制,为什么小数部分不能处理
#include<stdio.h>
#include<math.h>
int main()
{
    char a[999];
    int i,j=0,k,l=0,m,d[999],e[999];
    float b=0,c,n=0,o;
    printf("shu ru ba jin zhi shu \n");
    gets(a);
    for(i=0;i<999;i++)
    {
        if(a[i]=='.'){k=i-1;l++;}
         if(a[i]=='\0'){m=i-1;break;}
    }
    if(l==1)
    {
    for(i=k;i>=0;i--)
        b=b+(a[i]-48)*pow(10,k-i);
    for(i=k+2;i<=m;i++)
    {
        b=b+(float)(a[i]-48)/pow(10,i-k-1);
    }
       c=b-(int)b;
       for(i=0;i<999&&b!=0;i++)
        {
            d[i]=(int)b%2;
            b=(int)(b/2);
            n=n+d[i]*pow(10,i);
        }
    for(i=0;i<999&&c!=0;i++)
    {
        e[i]=c*2;
        c=c*2-e[i];
        n=n+(float)e[i]/pow(10,i+1);
    }
    }
    else
    {
     for(i=m;i>=0;i--)
               b=b+(a[i]-48)*pow(10,m-i);
     for(i=0;i<999&&b!=0;i++)
        {
            d[i]=(int)b%2;
            b=(int)(b/2);
            n=n+d[i]*pow(10,i);
        }
    }
    printf("%0f\n",n);
    return 0;
}


输入9.5  输出是1001.09976
搜索更多相关主题的帖子: include 二进制 十进制 
2012-06-13 13:25
windwing817
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-6-12
收藏
得分:0 
求帮忙
2012-06-13 13:53
windwing817
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-6-12
收藏
得分:0 
求大神
2012-06-13 18:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
你查一下资料(搜索),浮点数的二进制表示原理是什么。

授人以渔,不授人以鱼。
2012-06-13 19:49
windwing817
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-6-12
收藏
得分:0 
回复 4楼 TonyDeng
请问怎么修改  不太懂
2012-06-13 21:31
无名可用
Rank: 4
等 级:业余侠客
帖 子:79
专家分:259
注 册:2010-7-27
收藏
得分:7 
以下是引用TonyDeng在2012-6-13 19:49:03的发言:

你查一下资料(搜索),浮点数的二进制表示原理是什么。


确实,有些十进制小数没法用二进制小数精确表示,十进制的0.1对应的二进制小数你怎么表示呢。。
2012-06-13 22:31
prectise_all
Rank: 2
等 级:论坛游民
帖 子:18
专家分:40
注 册:2012-6-5
收藏
得分:7 
我也是来看问题看又答案么。。。
2012-06-13 22:51
快速回复:求人帮忙,我这个程序是十进制转二进制,为什么小数部分不能处理
数据加载中...
 
   



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

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