我正在编写一个程序,为矩阵的每个条目分配素数,然后我需要将它们中的一些相乘。 由此产生的数字迅速增长,我对使用哪种类型感到不知所措,因为我正在使用long double进行“环绕”:S
感谢所有帮助。
-Pickel
答案 0 :(得分:3)
答案 1 :(得分:0)
您可能必须实现自己的大整数类型。退房:
答案 2 :(得分:0)
如果它只是整数,那就是long long int
(至少在C / C ++中)。如果我们谈论的是双打......请使用BigDecimal类。
答案 3 :(得分:0)
假设你使用“long double”作为C或C ++赋值的类型?
你的数字有多大?
Maximum value vs. size of long and double in .NET
讨论了一些相关内容,但可能超出了您的作业范围
一般来说,您需要一个任意精度库:
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
但是,对于作业而言,您可能不需要将事情变得如此复杂以至于需要使用APL
答案 4 :(得分:0)
如果是整数,请使用BigInteger类(在Java或.NET中)
如果它是浮点数,请使用BigDecimal(仅在java中,.net仍然没有任意精度浮点数
如果您使用的是C / C ++,则必须创建自己的类型
答案 5 :(得分:0)
如果您拒绝使用库,并且不想创建自己的大型类型,为什么不跟踪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