为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?
为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?c语言中int型double型都有固定的大小, int型在vc中占4字节,double占8字节,所以表示的固定大小肯定会有问题。建议用数组移位表示的方法计算这么大的数 建议你看看这篇帖子,里边有实现的方法2一千次的实现方法 有源程序吗 顶一下,,,,,,,,,,,, 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);
} LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 long int来定义sum。PS 5的100次方真心太大... xx372859523 发表于 2013-8-15 18:47 static/image/common/back.gif
LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
所以应该用数据移位乘法解决范围问题
页:
[1]
2