2012-01-03 12 views
2

Javaで平方根のような不合理な数値を格納する最良の方法は何ですか?私は100桁以上の精度を必要とするので、浮動小数点と倍精度はうまくいかないでしょう。それはBigDecimalですか?以前はこれを使っていましたが、奇妙な問題に遭遇しました。私のコードは非常に複雑ですので、私はBigDecimalが他のものを取り直す前に正しい方法であることを確認したいと思います。Javaの正方形のルーツ

+0

_Is it BigDecimal?はい、そうです。 –

+1

BigDecimalでテストを実行しましたが、問題を文書化できますか?私はBigDecimalsが必ずしも最も効率的であるとは思っていませんが、不正確な計算をしたことは一度もありません。 – nmjohn

+0

http://stackoverflow.com/questions/7676521/storing-large-decimal-numbers-in-java – NinethSense

答えて

1

JScienceにチェックを入れてください。10進数のクラスがあり、桁数とその後に必要な精度を設定できます。

thisのようなものが必要です。

+0

他の回答も良くなりましたが、これが私を最も助けました。 ところで、今はFloatingPointと呼ばれています。 – user1126849

1

はい、BigDecimalです。それは非常に確実に動作します - 何らかの異常な問題はおそらくパイロットエラーでした。

3

すべての数字が同じ操作(たとえばすべての平方根)に由来する場合は、計算結果の代わりにそのソース(四角など)を保存できます。数字はいくつかの計算から来た場合は、これをカプセル化するクラス作成することができ、:SquareRootCubedRootなど例えば

を、√2new SquareRoot(2)だろう、とそのフィールドはlongまたはdouble(2)と、おそらくだろうまたtransientキャッシュ結果(BigDecimal)。

+0

私は実際の数字が必要でしたが、私はこれを明確に指定していないかもしれません。 – user1126849