超过了long int的精度么?
超过了就写个小程序移位慢慢算吧。呵呵。

解决方案 »

  1.   

    把两个大数的各位放在两个数组里面,然后一位一位算.好象是学FORTRAN时候的课后习题啊!
      

  2.   

    use __int64 and _i64toa(), for example:#include <stdlib.h>
    #include <stdio.h>void main( void )
    {   char buffer[255];   unsigned int i=419;
       unsigned int i2=12345679;
       unsigned __int64 ilong;   ilong = (unsigned __int64) i*i2;   _ui64toa( ilong, buffer, 10);      printf( "String of integer %I64d (radix 10): %s\n", ilong, buffer );
      
    }
      

  3.   

    哦?
    如果是9999999999999*989786478464895*4561515656的结果呢?
    我知道π不是用long double 算出来地!
      

  4.   

    真要那样的话,那你应该自己建立个类,重载那些数学运算操作符,Java中就有个BigInteger类
      

  5.   

    here is an example, :-)http://www.tvdsb.on.ca/saunders/courses/DSC4a/Cplusplus/class/BigInt/index.htm
      

  6.   

    // by ZhangZhenyu 2001/06 power(x,y) x,y can be a very long number#include "stdio.h"
    #include "stdlib.h"
    #include "string.h"#define MAXLEN 8000char * LongMultip (char * str1,char * str2)  ;
    int numlength( char * str)
    {
    int i;
    for(i=MAXLEN-1;str[i]=='0';i--);
    return i+1;
    }int main()
    {
    char num[256];
    int  i,idx;
    int  len;
    char strnum[MAXLEN];
    char strpow[MAXLEN];
    memset(strnum,'0',sizeof(strnum));
    memset(strpow,'0',sizeof(strpow));

    printf("input a number and an index:");
    scanf("%s%d",num,&idx);
    len=strlen(num) ;

    for(i=len;i>0;i--)
    {
    strpow[len-i]=num[i-1];
    strnum[len-i]=num[i-1];
    } for(i=0;i<idx-1;i++)
    {
    LongMultip(strpow,strnum);
    }

    printf("power(%d,%d) is:\n",atoi(num),idx);
    if(idx==0)
    {
    printf("1\n");
    return 0;
    }
    for(i=numlength(strpow)-1;i>=0;i--)
    printf("%c",strpow[i]);
    printf("\n");
    return 0;
    }char * LongMultip (char * str1,char * str2)
    {
    int  i,j;
    int  numlen;
    int  CF,MU,SU;
    char strtemp[MAXLEN];
    char strsum[MAXLEN];
    //Initialize
    memset(strtemp,'0',sizeof(strtemp));
    memset(strsum,'0',sizeof(strsum));
    for(i=0;i<numlength(str2);i++)
    {
    memcpy(strtemp,str1,MAXLEN);
    //LeftShift;
    numlen=numlength(strtemp);
    for(numlen--;numlen>=0;numlen--)strtemp[numlen+i]=strtemp[numlen];
    for(j=0;j<i;j++)strtemp[j]='0';
    //Multiplication
    numlen=numlength(strtemp);
    CF=0;
    for(j=0;j<numlen;j++)
    {
    MU=(strtemp[j]-'0')*(str2[i]-'0')+CF;
    CF=MU/10;
    strtemp[j]=MU%10+'0';
    }
    strtemp[j]=CF+'0';
    //Add to Sum
    if(numlength(strtemp)>numlength(strsum))
    numlen=numlength(strtemp);
    else
    numlen=numlength(strsum);
    CF=0;
    for(j=0;j<numlen;j++)
    {
    SU=(strtemp[j]-'0')+(strsum[j]-'0')+CF;
    CF=SU/10;
    strsum[j]=SU%10+'0';
    }
    strsum[j]=CF+'0';
    }
    memcpy(str1,strsum,MAXLEN);
    return str1;
    }这是网上找的,你看看!别忘了看世界杯◎! http://www.csdn.net/cnshare/soft/10/10423.shtm