Java计算大型数学表达式

Java计算大型数学表达式,java,math,numbers,expression,Java,Math,Numbers,Expression,我面临着这样一种情况:我必须计算一些巨大的数学表达式。表达式本身很简单,即只有传统的BODMAS基本数,但作为操作数出现的数字非常大,多达1000位数字。我确实知道java.math模块的BigInteger类,但我正在寻找一种不同的方法,以便计算也能以快速的方式进行。我是一个仍在Java中站稳脚跟的人,所以任何关于这方面的建议都会很有帮助 问候 p1nG既然您说您是Java新手,我建议您使用BigInteger和BigDecimal,除非您想编写自己的任意大数处理程序。BigInteger和B

我面临着这样一种情况:我必须计算一些巨大的数学表达式。表达式本身很简单,即只有传统的BODMAS基本数,但作为操作数出现的数字非常大,多达1000位数字。我确实知道java.math模块的BigInteger类,但我正在寻找一种不同的方法,以便计算也能以快速的方式进行。我是一个仍在Java中站稳脚跟的人,所以任何关于这方面的建议都会很有帮助

问候
p1nG

既然您说您是Java新手,我建议您使用BigInteger和BigDecimal,除非您想编写自己的任意大数处理程序。BigInteger和BigDecimal对于大多数应用来说都足够快。我唯一一次遇到速度问题是在处理一百万位数的数字时


除非您有不使用BigInteger的特殊需要。

使用BigInteger试试,用一些测试计算分析结果,看看它是否适合您,然后再寻找更优化的方法。

首先正确编写程序(使用BigFoo)然后确定优化是否合适。

BigInteger/BigFloat将是您可能得到的最优化的广义数学实现

如果您想要更快,您可能可以编写汇编来使用位移位模式进行专门的数学运算(例如,除以2往往是一个简单的右移),但如果您要做的不仅仅是几种不同类型的方程,这将是非常不切实际的


BigInteger只比int慢,但它可能是在不使用另一种语言的情况下,对大于64位的数字进行运算所能得到的最好结果——即使这样,除非另一种语言是汇编语言,否则也不会有太大的改进

我很惊讶1000位数的方程式有实际的应用(也许加密除外)
你能解释一下你在做什么以及你的速度要求是什么吗?

有些关联:你怎么知道BigInteger不是“快速的”@ping:快速的方式不是一个可测量的要求(例如,你需要在不到1毫秒的时间内完成计算)你试过BigInteger并认为它太慢了吗?@all:谢谢你的回复。我确实尝试过BigInteger,但我面临的问题是,当我尝试计算一个类似“7+3”的字符串,然后将结果存储在BigInteger中时,它会抛出一个NumberFormat异常。有没有关于如何处理的指针?您需要的是
biginger(“7”)。添加(biginger(“3”)