1
我正在編寫我自己的bignum類,以便在大數量下操作。到目前爲止,我已經超過了operator=
和operator+
。我如何進行長期劃分?bignum divison和C++中的值賦值
另外,現在我只能將整數範圍內的值賦給bignum對象。如何分配超出int範圍的值?沒有字符串可以做到這一點嗎?
#include <iostream>
using namespace std;
class bignum
{
public:
int number[20];
bignum operator + (bignum);
bignum operator = (int);
void output()
};
bignum bignum::operator= (int j)
{
int f;
f=j;
for(int k=0; k<=19; k++)
{
number[k]=0;
}
for(int l=19; l>=0,f>0; l--)
{
number[l]=(f%10);
f/=10;
}
}
bignum bignum::operator+ (bignum b)
{
bignum a;
int carry=0;
for(int k=0; k<=19; k++)
{
a.number[k]=0;
}
for(int i=19; i>=0; i--)
{
a.number[i]= number[i]+b.number[i]+a.number[i];
if(a.number[i]>9)
{
carry=(a.number[i]/10);
a.number[i-1]+=carry;
a.number[i]=(a.number[i]%10);
}
}
return a;
}
int main()
{
bignum a,b,c;
a=9999;
b=a+a;
//for(int k=1; k<=9; k++)
//b.number[k]=0;
//b=a+a;
for(int k=0; k<=19; k++)
cout<<b.number[k];
cin.get();
}
如果您需要處理非常大的數字,那麼aproximation算法就是這樣。此外,對於分配,最好使用十六進制字符串而不是十進制(如果您的數字標識使用二進制形式表示,則它的CPU佔用率將遠遠小於解碼十六進制數) – Spektre 2013-09-05 23:16:50