Java 中的大数
我将如何在 Java 中进行非常大的数字的计算?
我尝试过long
,但最大值为 9223372036854775807,当使用整数时,它不能保存足够的数字,因此对于我的需要来说不够准确。
有没有办法解决?
How would I go about doing calculations with extremely large numbers in Java?
I have tried long
but that maxes out at 9223372036854775807, and when using an integer it does not save enough digits and therefore is not accurate enough for what I need.
Is there anyway around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以将
BigInteger
类用于整数,将BigDecimal
类用于具有十进制数字的数字。 这两个类都在 java.math 包中定义。例子:
You can use the
BigInteger
class for integers andBigDecimal
for numbers with decimal digits. Both classes are defined injava.math
package.Example:
使用属于 Java 库的
BigInteger
类。http://java.sun.com/j2se /1.5.0/docs/api/java/math/BigInteger.html
Use the
BigInteger
class that is a part of the Java library.http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html
这是一个很快就得到大数字的例子。
Here is an example which gets big numbers very quickly.
查看
BigDecimal
和BigInteger
。Checkout
BigDecimal
andBigInteger
.根据您正在做的事情,您可能想看看 GMP (gmplib.org),它是一个高性能多精度库。 要在 Java 中使用它,您需要二进制库的 JNI 包装器。
请参阅一些 Alioth Shootout 代码,了解使用它而不是 BigInteger 将 Pi 计算为任意位数的示例。
https://benchmarksgame-team.pages.debian。网/benchmarksgame/program/pidigits-java-2.html
Depending on what you're doing you might like to take a look at GMP (gmplib.org) which is a high-performance multi-precision library. To use it in Java you need JNI wrappers around the binary library.
See some of the Alioth Shootout code for an example of using it instead of BigInteger to calculate Pi to an arbitrary number of digits.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-java-2.html