如何处理大数字?

时间:2013-08-27 06:29:31

标签: c++ boost

我有一个非常大的数字,假设涉及一些交易ID或大笔资金。那么,我将如何处理这些计算(添加,多个等)。是否有其他人将它存储在通用存储类型(长,长等)以处理这种情况? boost是否支持解决方案?

6 个答案:

答案 0 :(得分:8)

您使用的是处理大数字的库,例如The GNU Multiple Precision Arithmetic Library,这似乎是最常见的。或者,如果你特别想要Boost,那么总是the Multiprecision library(可以使用GMP作为后端)。

答案 1 :(得分:5)

请检查boost multiprecision库..如果您的项目已经使用了boost,这将非常方便。 boost multiprecision library

答案 2 :(得分:2)

答案 3 :(得分:0)

你可以编写大量的类来处理计算。 使用字符数组存储您的数据。

答案 4 :(得分:-1)

如果您的数字大于int,long或double。使用long long类型,不用担心添加,乘法等。

  • long long largenum = 100000000000LL

答案 5 :(得分:-1)

对于这个问题我们应该创建一个 划分和征服递归功能我告诉你 你怎么能这样做:

问题=多个U * V拖100个数字..
功能输出=(产品)返回U * V
Long Long Long Integer Numbers ...
喜欢9999999999999999 * 99999999999999999
在编程语言中创建类似的类..

    Long.Integer Prod(large.integer u,large.integer v)
{
large.integer x,y,w,z;
int m,n;
n = max(“数字位数”u,“数字位数”v)
if(u == 0 || v == 0)
{
返回0;
}
否则如果(n {
返回(u * v);
}其他
{
m = n / 2; // n =数字的数字u
x = u div(10 ^ m);
y = u rem(10 ^ m);
w = v div(10 ^ m);
z = v rem(10 ^ m);
return prod(x,w)*(10 ^(2 * m))+ prod(x,z)+ prod(w,y)*(10 ^ m)+ prod(y,z);
}
}
}

在本项目中,t(n)= 4t(n / 2)+ CN !!

Mathematica中牵引小数的样本:
4795 * 2412 =?
n = 4(4795的数字)

结果:

(47 * 10 ^ 2 +95)*(24 * 10 ^ 2 + 12)=>
=> (47 * 24 * 10 ^ 4)+(47 * 12 * 10 ^ 2)+(95 * 24 * 10 ^ 2)+ 95 * 12
=> 47 * 24 * 10 ^ 4 + 47 * 12 + 95 * 24 + 10 ^ 2 + 95 * 12 =功能结果

最好的问候Aj.Duende(波斯家伙)