蛋疼○▲○ 发表于 2013-8-12 10:14

为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?

为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?

wangzheng3056 发表于 2013-8-12 10:18

c语言中int型double型都有固定的大小, int型在vc中占4字节,double占8字节,所以表示的固定大小肯定会有问题。建议用数组移位表示的方法计算这么大的数

wangzheng3056 发表于 2013-8-12 10:25

建议你看看这篇帖子,里边有实现的方法2一千次的实现方法

xx372859523 发表于 2013-8-12 14:37

有源程序吗

发表于 1970-1-1 08:00

Summershumo 发表于 2013-8-15 16:56

顶一下,,,,,,,,,,,,

wangzheng3056 发表于 2013-8-15 17:00

xx372859523 发表于 2013-8-12 14:37 static/image/common/back.gif
有源程序吗

#include<stdio.h>
#define max_size 100000
#define pow_count 1000//次数
int a;
void add_bite(int i)
{
    if((a+1)>10)  
    {
         a=(a+1)%10;
         add_bite(i+1);
     }
    else
    {
        a+=1;
    }
}
void main()
{   
    int sum,i,j;
    a=2;
    sum = 0;
    for(i=1;i<max_size;i++)
    {
        a = 0;   
    }
    for(i = 1;i<pow_count;i++)
    {
        for(j=0;j<max_size;j++)
        {
            if(a*5>=10)
            {
                a = a*5%10;
                add_bite(i+1);
            }
            else
            {
               a= a*5;
             }
         }  
    }   
    for(i=max_size;i>0;i--)
    {
        if(a!=0) break;
    }
    for(j=i;j>0;j--)
    {
        sum++;
        printf("%d",a);
     }
     printf("\n%d",sum);
}

xx372859523 发表于 2013-8-15 18:47

LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 long int来定义sum。PS 5的100次方真心太大...

wangzheng3056 发表于 2013-8-15 22:01

xx372859523 发表于 2013-8-15 18:47 static/image/common/back.gif
LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...

所以应该用数据移位乘法解决范围问题

发表于 1970-1-1 08:00

页: [1] 2
查看完整版本: 为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?