怎样将一个超长整型数据转换为字符串?比如:419*12345679的结果转换为字符串。 超过了long int的精度么?超过了就写个小程序移位慢慢算吧。呵呵。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把两个大数的各位放在两个数组里面,然后一位一位算.好象是学FORTRAN时候的课后习题啊! 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 ); } 哦?如果是9999999999999*989786478464895*4561515656的结果呢?我知道π不是用long double 算出来地! 真要那样的话,那你应该自己建立个类,重载那些数学运算操作符,Java中就有个BigInteger类 here is an example, :-)http://www.tvdsb.on.ca/saunders/courses/DSC4a/Cplusplus/class/BigInt/index.htm // 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 MFC Edit控件输入范围问题 CreateProcess WaitForSingleObject 句柄无效 _T()的作用? CGraphWnd 是个什么类?急~~在线等 :“/MT”和“/clr:pure”命令行选项不兼容 CPU中断的内部硬件实现原理是什么 ┏┞┞┞┞┯┯ 为什么 send 会在循环中 死锁 呢? vc++调用ORACLE存储过程的一些问题 急!如何调试用atl写的windows2k服务? vista win7下的服务如何与桌面交互 好久没有来了,我今天来问一个问题,我给50分,大家可要帮助我啊? 关于多串口的实时通信问题,做成多线程好,还是事件触发好呢?
#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 );
}
如果是9999999999999*989786478464895*4561515656的结果呢?
我知道π不是用long double 算出来地!
#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