在Java中存储方形根等非理性数字的最佳方法是什么?我需要很高的精度(超过100位数),因此浮动和双倍不会很好。是BigDecimal吗?之前我正在使用它,但我遇到了奇怪的问题,它可能只是我的代码。我的代码非常复杂,所以我想确保在我重写其他内容之前,BigDecimal是正确的方法。
答案 0 :(得分:3)
如果您的所有数字来自相同的操作(例如,所有平方根),则可以存储其源(例如方形)而不是计算结果。如果数字来自一些计算,您可以创建封装它的类:SquareRoot
,CubedRoot
等。
例如,√2为new SquareRoot(2)
,其字段为long
或double
(2),可能还有transient
缓存结果(作为BigDecimal
)。
答案 1 :(得分:1)
答案 2 :(得分:1)
是的,BigDecimal
是可行的方法。它运行得非常可靠 - 任何奇怪的问题都可能是飞行员错误。