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