标题:求小数的位数
只看楼主
明明白白
Rank: 2
等 级:论坛游民
帖 子:57
专家分:61
注 册:2012-3-19
得分:0 
回复 10楼 wp231957
#include<stdio.h>
int main()
{
    double dec = 5550.687;
    int i=0;
    while(1)
    {
        dec=dec-(int)dec;
        if(dec*10-(int)(dec*10)<0.0000001) break;
        i++;
        dec=dec*10;
    }
    i++;
   
    printf("%d",i);
   
}你试试
2012-11-19 21:36
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:10 
试试这个吧
程序代码:
#include <stdio.h>
#include<string.h>
int main ()
{
    double dec;
    scanf("%lf",&dec);
    char str[100];
    sprintf(str,"%lf",dec);
    int len=strlen(str);
    int count=0,zero=0;
    for(char c=str[--len];c!='.';c=str[--len]){
        if(c-'0'!=0){
            zero=1;
        }
        if(zero)
            count++;
    }
    printf("%d",count);
    return 0;
}


WE GO
2012-11-19 21:42
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
  sprintf(str,"%lf",dec);
小陈的方法好,我还不知道C有这个函数呢

DO IT YOURSELF !
2012-11-19 21:53
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:0 
呵呵
这个还不够好,输出不了123456.123456780900
你们改一下哦

WE GO
2012-11-19 22:03
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用cyhdahua在2012-11-19 22:03:20的发言:

呵呵
这个还不够好,输出不了123456.123456780900
你们改一下哦
double 有那么大的精度吗,不就是小数点后6位吗

DO IT YOURSELF !
2012-11-19 22:05
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:0 
有啊
改成这个试试
    sprintf(str,"%10.16f",dec);
%lf在printf下是未定义的

WE GO
2012-11-19 22:08
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 

测试了

printf("3/59=%10.16lf\n",double(3.0/59.0));

DO IT YOURSELF !
2012-11-19 22:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387600-1-1.html




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

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