C++编程如何保存一个非常巨大的数

在编程的时候,经常遇到一些非常非常庞大的结果,用double型和long long型都会发生数据溢出。这时候应该怎么把整个变量完整地保存下来?分成两个变量来保存?用字符数组保存?保存后又应该如何引用和输出?

把这个很大的数看做字符串,输出以字符串形式输出;如果你引用的只是这个很大数的一个字节或几个字节,可以看做引用字符数组的第多少个元素;注意内存大小端;参考memcpy()函数.内存拷贝函数
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-05
将float转化为4位byte 数组、double 8个、用共用结构体、具体你百度吧、我手机复制不了、可以下午给你追问

那就等候你的答案了~

追答

//4位byte转float型函数
float bytes_float(u8 bytes[4])
{

union lhex{
unsigned char d[4];
float f;
}fdata;

fdata.d[0] = bytes[0];
fdata.d[1] = bytes[1];
fdata.d[2] = bytes[2];
fdata.d[3] = bytes[3];

return fdata.f;
}

//float转4位byte函数
void float_bytes(float num,int x)
{

union float_bytes
{
char bytes[4];
float f;
} f_b; //结构体
f_b.f=num;

}

具体还要看它是生命数据,double也差不多 你可以百度double 数据存储的形式

追问

这个好像是没什么用啊,我想说的是将一个超过数据范围的数完整保存下来并且加减乘除都能正常使用

追答

什么意思。那你的运算不是要自己定义,不然你凭什么 两个已经定义类型数据进行运算返回的是 一个超过数据的未定义的数据类型呢!? 可以尝试用科学计数法试试 一般double 都可以了吧

我看了的代码,发现你要算整形,对奇偶数进行不同的运算 ,当你的N很大是,再进行乘法整形已经容纳不了 。2.如果可以的话返回double型 ,再将数除以10n次方 ,n 随便拟定 。把
设 double num ; //num是int容纳不了的
再定义另一个变量
int num1;
num1=(int)(num/1000...); //将数据分割
num1=num/1000... - num1 //剩余小数部分
再将小数部分
num1*1000...
类似这样将数据分割,用数组记录下来

本回答被提问者采纳
第2个回答  2014-12-05
自定义一个大数据类型的类,自己封装各种运算操作,至于用什么形式储存随你。本回答被网友采纳
第3个回答  2014-12-05
都可以阿
当然计算时候要自己写算法追问

你就不给点答案吗?

追答

没有标准答案的

C++编程如何保存一个非常巨大的数
把这个很大的数看做字符串,输出以字符串形式输出;如果你引用的只是这个很大数的一个字节或几个字节,可以看做引用字符数组的第多少个元素;注意内存大小端;参考memcpy()函数.内存拷贝函数

C++编程中到底要怎么存一个大数啊 比如很大的数相加减!!!请给出说明...
if(A.m_nLength==1)return Div(A.m_ulValue[0]); CInteger X,Y,Z; unsigned i,len; unsigned __int64 num,div; Y.Mov(*this); while(Y.Cmp(A)>=0) { div=Y.m_ulValue[Y.m_nLength-1]; num=A.m_ulValue[A.m_nLength-1]; len=Y.m_nLength-A.m_nLength; if((div==num)&&...

c++编程中如何定义一个很大的数组(2000*20000)?
两种方法:1、把这些数组定义成全局的,不要放在函数内部;2、和一楼兄弟说的方法一样用new或malloc申请动态内存,例如:char* a = new char[2000*20000];注:不仅VC6,所有编译器对堆栈大小都是有限制的,这个限制可以通过设置调整

c++builder如何存住一个数
要永久的存放数据有两个方法:第一,永远把程序和计算开着,就像表一样,没电池了,又会回到原来的时间。第二,所有编程软件中唯一能永久保存数据的方法是,把你的数据写到文件Dat、txt等文件中,在每次程序初始化的时候再读入内存中,这样就可以了,当然要保证那个文件不要删除。

用devc++编程,找三个数中最大的一个
你先定义一个max用来存取最大值,开始的时候用max等于第一个数,然后和第二个数进行比较,如果第二个数大于MAX则让MAX等于第二个数,否则就不变,然后在用MAX和第三个数进行比较,如果大于MAX,则让MAX等于第三个数,否则就不变,最后最大的数就存于MAX中,只要打印出MAX就可以完成了。

C++编程:给你一个非常大的整数x,(-10^400 <=x<= 10^400),请统计x的每...
include <iostream> include<string> using namespace std;int main(){ string str;int n,i,count[3];for(i=0;i<3;i++)count[i]=0;cout<<"输入:";cin>>str;for(i=0;i<str.length();i++){ n=(int)str[i]-48;switch(n){ case 1:count[0]++;break;case 2:count[1]++;...

输入3个数。输出最大的一个数的C++程序
当a>c>b时,输出的应该是c.if(b > a)max = b;if(c > b)max = c;应该改成:if(b > max)max = b;if(c > max)max = c;另外:scanf("%d,%d,%d\\n",&a,&b,&c);这条语句最好必成:scanf("%d%d%d",&a,&b,&c);这样你在输入数据时,不需要输入,与两个Enter ...

c++编程输入四个数,输出最大的数
include using namespace std;int main(){ int a,b,c,d;int temp,max;cout<<"请输入四个整数"<<endl;cin>>a;cin>>b;cin>>c;cin>>d;temp=a>b?a:b;temp=temp>c?temp:c;max=temp>d?temp:d;cout<<"最大的数字是:"<<max<<endl;return 0;} ...

C++初级编程题目 编写一个函数实现10个数的最大值函数
把10个数存进一个组数array[]中int temp;\/\/用来保存最大值temp = array[0];for(int i = 0; i < 9; i++){temp = temp >array[i]?temp :array[i]; } 十个数的和更简单int array[10];int sum(){int tmp;for(int j = 0; j <9;j++){tmp += array[i];}} void main(...

c++定义数组的时候是不是都要先定义一个非常大的?
首先,我觉得正确的描述是适当定义大一点是可以的,绝对不是都要定义非常大。例如我们在PC上编程,现在的PC可能4G内存,你定义的数组不要无聊的定义个1G、2G大小,除非你确实需要这么多。如果是在单片机等开发,那内存是K级的限制。其次,我认为优秀的程序员要节约每一个字节内存。定义数组一般比实际需求...

相似回答