Java 中的精确平方根

发布于 2024-12-24 19:03:43 字数 153 浏览 2 评论 0原文

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

What is the best way to store irrational numbers like square roots in Java? I need a great deal of precision (over 100 digits), so float and double won't be good. Is it BigDecimal? I was using that before but I ran into strange problems, it could just be my code though. My code is very complex so I want to make sure BigDecimal is the right way to go before I rework the other stuff.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终遇你 2024-12-31 19:03:43

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

例如,√2 将是 new SquareRoot( 2),其字段将是一个 longdouble (2) 并且可能也是一个 transient 缓存结果(作为BigDecimal)。

If all of your numbers are coming from the same operation (e.g., all square roots), you could store their source (e.g. the square) instead of the computed result. If the numbers come from a few computations, you could create classes that encapsulate this: SquareRoot, CubedRoot, etc.

For instance, √2 would be new SquareRoot(2), and its fields would be an long or double (2) and probably also a transient cached result (as a BigDecimal).

水中月 2024-12-31 19:03:43

检查类似 JScience 的东西,它有一个小数类,您可以在其中设置位数以及随后所需的精度。

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

Check something like JScience it has a decimal class where you can set the number of digits and subsequently the required precision.

something like this is what you need.

離人涙 2024-12-31 19:03:43

是的,BigDecimal 是正确的选择。它的工作相当可靠——任何奇怪的问题都可能是飞行员的失误。

Yes, BigDecimal is the way to go. It works quite reliably -- any odd problems were probably pilot error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文