| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4897 人关注过本帖
标题:高精度求小数的幂次方 真的希望各位大哥能指点一下 谢谢
只看楼主 加入收藏
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
看看这个对不对..

#include<stdio.h>
void main()
{
    char s[7];
    int i,j,n,m,k,flag;
    long int a[100]={0};
    char st[395]={'0'};
    a[0]=1;
    while(scanf("%s %d",s,&n)!=EOF)
    {

        for(i=0;i<100;i++)
            a[i]=0;
        for(i=0;i<396;i++)
            st[i]='\0';
        st[0]='0';
        a[0]=1;
        m=0;
        j=1;
        flag=-1;
        for(i=0;s[i];i++);
        k=i-1;
        for(i--;i>=0;i--)
        {
            if(s[i]=='.')
            {
                flag=(k-i)*n;
                continue;
            }
            else
            {
                m+=(s[i]-'0')*j;
                j*=10;
            }
        }
        while(n--)
        {
            for(i=0;i<100;i++)
                a[i]*=m;
            for(i=0;i<100;i++)
            {
                a[i+1]=a[i+1]+(a[i]/10000);
                a[i]=a[i]%10000;
            }
        }
        for(i=0,k=0;i<99;i++,k+=4)
        {
            st[k+3]=a[i]/1000+'0';
            a[i]%=1000;
            st[k+2]=a[i]/100+'0';
            a[i]%=100;
            st[k+1]=a[i]/10+'0';
            a[i]%=10;
            st[k]=a[i]+'0';
        }
        for(i=395;i>=flag;i--)
        {
            if(st[i]!='0')
                break;
        }
        for(j=0;j<flag;j++)
        {
            if(st[j]!='0')
                break;
        }
        if(i<j)
            printf("0\n");
        else
        {
            for(i;i>=j;i--)
            {
                if(i==flag-1)
                    printf(".");
                printf("%c",st[i]);
            }
            printf("\n");
        }
    }
}

2007-10-26 19:48
快速回复:高精度求小数的幂次方 真的希望各位大哥能指点一下 谢谢
数据加载中...
 
   



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

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