我正在开发一个数学解析器,它能够评估String '5+b*sqrt(c^2)'。我正在使用ANTLR进行解析,并取得了良好的进展。现在,我跌倒Java类BigDecimal并思考:嘿,为什么不在这里考虑精度。
'5+b*sqrt(c^2)'
BigDecimal
我的问题是Java API没有为BigDecimals like 提供三角函数java.lang.Math。您是否知道是否有诸如Apache Commons这样的好数学库可以解决此问题?
java.lang.Math
另一个问题是如何实现幂方法,以便我可以用BigDecimals 计算4.9 ^ 1.4 。这可能吗?
关于数字计算的书要求也被赞赏。
ApFloat是一个库,其中包含三角函数和非整数幂的任意精度近似值;但是,它使用自己的内部表示形式,而不是BigDecimal和BigInteger。我以前没有使用过它,所以我不能保证它的正确性或性能特征,但是api似乎相当完整。
BigInteger