1

Ruby の BigDecimal クラスの目的は、速度を犠牲にして無限に任意に正確にすることだと思いました。違う:

> BigDecimal(4).sqrt(4)
=> #<BigDecimal:906602c,'0.1999999999 9999999998 66602351E1',36(36)>
> BigDecimal(4).sqrt(11)
=> #<BigDecimal:9e36850,'0.2E1',9(45)>

まず、sqrt少なくともドキュメントでは、パラメータなしで動作するはずです。次に、そのパラメーターが精度の場合、この操作には 4 で十分です (または、少なくとも 11 桁の精度が問題ないことを知る必要はありません)。

私が望む最後のことは、車輪を再発明して、独自の「任意に正確な二乗ライブラリ」を作成することです。

質問:

  • 上記が起こらないように BigDecimal インスタンスにパラメータを設定することは可能ですか? (意味: 低精度で適切な結果を返す)
  • BigDecimal オブジェクトに関する詳細情報はありますか (値の後の数字は何ですか)?

システム: Debian、32 ビット、ルビー 1.9.3p125

4

1 に答える 1

1

inspectの10進数の大きなドキュメントには、その出力の意味が説明されています。

そのためのドキュメントについてはsqrt、ドキュメントのバグのようです-http://bugs.ruby-lang.org/issues/5267を参照してください

取得している出力については、よくわかりません。どちらの場合も0.2E1を取得しています。

于 2012-04-10T21:00:46.213 に答える