我正在编写一个程序,将素数分配给矩阵的每个条目,然后我需要将其中的一些相乘。结果数字迅速增长,我不知道要使用哪种类型,因为我得到了 long double 的“环绕”:S
感谢所有帮助。
-皮克尔
我正在编写一个程序,将素数分配给矩阵的每个条目,然后我需要将其中的一些相乘。结果数字迅速增长,我不知道要使用哪种类型,因为我得到了 long double 的“环绕”:S
感谢所有帮助。
-皮克尔
假设您使用“long double”作为 C 或 C++ 赋值的类型?
你的数字有多大?
讨论一些相关的东西,但可能超出你的作业范围
一般来说,您需要一个任意精度库:
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
但是很有可能,出于作业的目的,您不需要使事情变得如此复杂以至于需要使用 APL
如果是整数,请使用 BigInteger 类(在 Java 或 .NET 中)
如果是浮点数,请使用BigDecimal(仅在 java 中,.net 仍然没有任意精度的浮点数
如果您使用 C/C++,则必须创建自己的类型
您可能必须实现自己的大整数类型。查看:
如果它只是整数,那么long long int
(至少在 C/C++ 中)。如果我们谈论双打...使用 BigDecimal 类。
如果您拒绝使用库,并且不想发明自己的大类型,为什么不跟踪 2 的额外因数或类似的东西。
while ( mybignum > BIGNUM_THRESH )
{
twos++;
mybignum /= 2; // use >>=1 if you use an integer type (you said you used double so therefore the /=)
}
然后将您的答案打印为mybignum * 2**twos
取一个 64 位 int 的两个,你可以安全到 2^2^64