2013-03-22 46 views
1

所以我不确定这是Eclipse,Java还是我的电脑的问题。我想要做的基本上是2^57885161-1。但是,不幸的是,Eclipse输出的所有内容都是“Infinity”。我的推论或者是Java设置了计算公式的最大限度,Eclipse可以,或者我的计算机无法处理它需要的计算能力。增加Java的计算能力

如果是Java或Eclipse,有没有办法可以纠正这种情况?

谢谢。

+0

为什么?获取7Mb的'0xFF'不应该太复杂...... – 2013-03-22 05:54:05

+0

答案是1700万位数字,所以你知道...... – Kinz 2013-03-22 05:55:10

+1

当然。或者准确地说 - 用二进制表示的“整数”为7235645字节,值为0xFF。仍然非常有趣,你为什么需要这个。 – 2013-03-22 06:03:56

回答

4

对于非常大的数字使用java.math.BigDecimal(或java.math.BigInteger)类。

可能发生的情况是您使用的是int或double,并且该数字对于Java中的这些数据类型来说太大。使用可以任意长的BigDecimal,可以解决您的问题。

编辑 - 以前我写过“java.util.BigDecimal”,这是错误的包。

+0

请注意,你仍然只需填写17MB这个数字。 – 2013-03-22 06:13:16

+0

我相信这会起作用,但考虑到所需号码的大小,我相信它需要很长时间才能确定。感谢您的答复。我完全不知道这个真棒包! – Kinz 2013-03-22 06:28:34

+1

是的。做这个计算需要很长时间。因为你知道这将是所有的,所以有一个捷径:你可以用所需的0xff来填充一个byte [],然后使用BigInteger的byte []构造函数。这会稍快些,但它仍然相当笨拙。 – 2013-03-22 06:40:31