2

在Java中存储无理数(如平方根)的最佳方法是什么?我需要很高的精度(超过 100 位),所以 float 和 double 不会很好。是大十进制吗?我以前使用过它,但遇到了奇怪的问题,不过它可能只是我的代码。我的代码非常复杂,所以我想确保 BigDecimal 是正确的方法,然后再重新处理其他内容。

4

3 回答 3

3

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

例如,√2 是new SquareRoot(2),它的字段是一个longor double(2) 并且可能也是一个transient缓存的结果(作为 a BigDecimal)。

于 2012-01-03T05:56:32.920 回答
1

检查像JScience这样的东西,它有一个十进制类,您可以在其中设置位数以及随后所需的精度。

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

于 2012-01-03T05:33:05.327 回答
1

是的,BigDecimal是要走的路。它工作得非常可靠——任何奇怪的问题都可能是飞行员的错误。

于 2012-01-03T05:33:56.827 回答