我有一个非常大的数字,假设涉及一些交易 ID 或大笔资金。那么,我将如何处理这些(添加,多个等)的计算。是否还有其他方法将其存储在通用存储类型(long、long long 等)中以处理这种情况?boost是否支持该解决方案?
6 回答
您使用一个处理大数字的库,例如GNU 多精度算术库,它似乎是最常见的。或者,如果您特别想要 Boost,总有 Multiprecision 库(可以使用 GMP 作为后端)。
请检查 boost 多精度库。如果您的项目已经在使用 boost,它将很方便。 提升多精度库
最接近标准的是GNU 多精度算术库。
你可以写大量的类来处理计算。使用字符数组存储您的数据。
如果您的数字大于 int、long 或 double。使用 long long 类型,不用担心加法、乘法等。
- long long largenum = 100000000000LL
对于这个问题,我们应该创建一个
分而治之的递归函数,我向您展示
如何做到这一点:
问题 = 多个 U*V 拖 100 位数字..
函数输出 = (Prod) 返回 U*V
Long Long Long 整数。 ..
像 9999999999999999*99999999999999999
在您的编程语言中创建这样的类..
{
large.integer x,y,w,z;
诠释米,n;
n = max("数字的位数" u , "数字的位数" v)
if(u == 0 || v == 0)
{
return 0;
}
else if (n {
return (u*v);
}else
{
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);
返回 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 (波斯人)