私は、RubyのBigDecimalクラスの目的は、無制限に
であり、スピードを犠牲にして任意の精度であると考えました。間違っ:Rubyの平方根はBigDecimal.sqrtより精度が高いですか?
> BigDecimal(4).sqrt(4)
=> #<BigDecimal:906602c,'0.1999999999 9999999998 66602351E1',36(36)>
> BigDecimal(4).sqrt(11)
=> #<BigDecimal:9e36850,'0.2E1',9(45)>
まず、sqrt
は少なくとも文書により、パラメータなしで動作するはずです。第2に、そのパラメータが精度の場合、この操作では4で十分です(少なくとも、11桁の精度は問題ありません)。
私が最後に望むのは、ホイールを再現し、自分の「任意の正確な二乗ライブラリ」を作成することです。
質問:
- 以上が起こらないように、BigDecimalのインスタンスにパラメータを設定することが可能ですか? (意味:低い精度で適切な結果を返します)
- BigDecimalオブジェクトに関する詳しい情報はありますか?
システム:Debianは、32ビット、ルビーはinspectため1.9.3p125
もう一度あなたの質問がありますか? (私はあなたが基本的にこの問題を文句を言うのに使っている問題を理解していますが、スタックオーバーフローから何を探しているのかは分かりません)Just _ "[BigDecimalの文書](http:// ruby-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html)"_? – Phrogz
"無限に正確な" sqrtを作成するには、無限のメモリが必要です。あなたはそれを持っていないと思います。何が間違っている? –
@VictorMoroz私はたくさんの記憶を持っていますが、私の驚いたことに、4の平方根は2ではなく、任意の正確なライブラリでこの問題にぶつかります。 – karatedog