Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理大量数字的程序或库_Java_Python_Math - Fatal编程技术网

Java 处理大量数字的程序或库

Java 处理大量数字的程序或库,java,python,math,Java,Python,Math,我正在寻找一些方法来处理数千万位数的数字,并且可以在这个级别上进行数学运算。我可以使用Java和一些Python。因此,为其中一个建立一个库是很方便的,但是一个能够处理这类数字的程序也可以工作。有人有什么建议吗 感谢对于Java,请查看内置类和大整数数字的大小受可用内存的限制BigDecimal可以表示任意大的以10为基数的数字,小数点右侧最多有232位(实际上,也受到可用内存的限制) 这两种方法都局限于相当基本的数学运算。(算术、整数幂等。无根、日志等)如果您需要更多的内容,请参阅上的库列表。

我正在寻找一些方法来处理数千万位数的数字,并且可以在这个级别上进行数学运算。我可以使用Java和一些Python。因此,为其中一个建立一个库是很方便的,但是一个能够处理这类数字的程序也可以工作。有人有什么建议吗


感谢对于Java,请查看内置类和<代码>大整数数字的大小受可用内存的限制
BigDecimal
可以表示任意大的以10为基数的数字,小数点右侧最多有232位(实际上,也受到可用内存的限制)


这两种方法都局限于相当基本的数学运算。(算术、整数幂等。无根、日志等)如果您需要更多的内容,请参阅上的库列表。(支持任意精度的超越函数和复杂的数学。)

Python无需任何库即可处理大数

>>> 100 ** 100
1000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000L
尽管正如其他人建议的那样,如果你想要额外的速度,你可能需要使用



在Java中,您可以使用。

BigDecimal应该足够好了。但是,您可以看看您需要什么类型的数学运算

Java已经提供了Java.math.BigDecimal或Java.math.BigInteger之类的类,您可以使用这些类来完成基本的工作(加法、乘法等)

对于Python,我建议使用Python包装器。虽然Python在理论上可以处理任意大的整数(仅受内存限制),并且可以处理几千位左右的数字,但它并不太适合处理百万位整数。它不使用最先进的算法进行快速乘法、数字转换和其他标准运算<相比之下,code>gmpy设计用于处理这种大小的数字

下面是一些示例计时,显示即使是几千位的
gmpy
也比Python的内置长码快得多:

$ python -m timeit -s "from gmpy import mpz" "str(mpz(10)**10000)"
1000 loops, best of 3: 575 usec per loop
$ python -m timeit "str(10**10000)"
100 loops, best of 3: 11.8 msec per loop

旁白:某个时候,一位Python核心开发人员尝试用直接使用GMP的实现替换Python的长整数实现。事实证明,对于日常的非大整数用例,它实际上减慢了Python的速度。有关详细信息,请参阅。

BigInteger和BigDecimal有什么问题?要查找java可以使用此数据类型的各种jabs库,请参阅。玩
sys.maxint
会有帮助吗?您的问题域是什么?我很难想象实际应用中需要这么大的数字和总的准确度。我在猜测一些事情:)它还应该给老板足够的时间告诉他:“但它仍然在计算!”。我试图计算出一千万位数的两个加数相加所需的时间,但我记不清了。但这个数字不是百万位数的10秒longinspectorG4dget:当然,我曾尝试先发布一个数千万位数的示例,但StackOverflow说帖子太长,所以我改为发布一个较短的示例。但我认为你应该能够理解这一点。请想象一下。@RobW因为1e999被解析为一个浮点,而不是一个整数。还有GMPY。Python的GMP。“可能会更快。”MarkByers:看来它还需要打印这么大的数字。可能是相关的。