| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 784 人关注过本帖
标题:二进制小数部分转换成十进制循环语句中出现死循环。
只看楼主 加入收藏
wmh100100
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-3-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
二进制小数部分转换成十进制循环语句中出现死循环。
#include<stdio.h>
#include<math.h>
void main(){
    double j=0.101,g;
    int i;
    for(i=1,g=0;j!=0;i++){
        j*=10;
        if(j>=1){
            j-=1;
            g=g+pow(2,-i);}}
    printf("%lf",g);
}
以上是一个简化的代码。
问题出在循环上了,但是我不知道哪里错了。
搜索更多相关主题的帖子: include double 二进制 十进制 
2015-05-23 18:52
wmh100100
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-3-22
收藏
得分:0 
现在给一个十进制转换成二进制的代码。这个几乎和上面一模一样,而且循环又没有出错。
    double x=10.625;
    int t,i;
    double j,g;
    j=x-(int)x;//分离整数小数部分。
    x=x-j;
    for(i=1,g=0;j!=0;i++){//小数部分转换。
        j*=2;
        if(j>=1){
            j-=1;
            g=g+pow(10,-i);
        }
    }
    x=x-j;
    for(t=0,i=0;x!=0;i++){//整数部分
        t=t+(int)x%2*pow(10,i);
        x=(int)x/2;
    }
2015-05-23 18:54
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:7 
浮点数有误差

一片落叶掉进了回忆的流年。
2015-05-23 19:15
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:7 
#include<stdio.h>
#include<math.h>
int main(){
    double j=0.101,g,k;
    int i;   
    for(i=1,g=0;j>0.0001;i++){  
         j=j*10;        
         g=g+1.0*(int)j*pow(2,-1*i);   
         j=j-(int)(j*10)/10;   
     }
     printf("%lf",g);
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-23 23:23
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:7 
死循环的原因是在计算机中无法景区表示0.101,所以j=j*10之后,j的数值可能大于1,所以出现了死循环,改成相面的样子就好了,供参考:
 main(){
    double j=0.101,g,a;
    int i=1;
    for(a=1,g=0;j>0;){
        j*=10;
        a/=2;
        while(j>=1){
            j-=1;
            g=g+a;
        }
   
    }
    printf("%lf\n",g);
2015-05-24 08:22
快速回复:二进制小数部分转换成十进制循环语句中出现死循环。
数据加载中...
 
   



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

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