Java中的精确平方根

时间:2012-01-03 05:25:24

标签: java precision bigdecimal square-root

在Java中存储方形根等非理性数字的最佳方法是什么?我需要很高的精度(超过100位数),因此浮动和双倍不会很好。是BigDecimal吗?之前我正在使用它,但我遇到了奇怪的问题,它可能只是我的代码。我的代码非常复杂,所以我想确保在我重写其他内容之前,BigDecimal是正确的方法。

3 个答案:

答案 0 :(得分:3)

如果您的所有数字来自相同的操作(例如,所有平方根),则可以存储其源(例如方形)而不是计算结果。如果数字来自一些计算,您可以创建封装它的类:SquareRootCubedRoot等。

例如,√2为new SquareRoot(2),其字段为longdouble(2),可能还有transient缓存结果(作为BigDecimal)。

答案 1 :(得分:1)

检查JScience之类的内容,它有一个十进制类,您可以在其中设置位数,然后设置所需的精度。

this这样的东西就是你所需要的。

答案 2 :(得分:1)

是的,BigDecimal是可行的方法。它运行得非常可靠 - 任何奇怪的问题都可能是飞行员错误。