我认为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位精度是正常的)。
我想要的最后一件事就是重新发明轮子,并创建一些我自己的“任意精确的平方库”。
问题:
系统:Debian,32位,ruby 1.9.3p125
答案 0 :(得分:1)
inspect的大十进制文档描述了输出的含义。
关于似乎是文档错误的sqrt
文档,请参阅http://bugs.ruby-lang.org/issues/5267
至于你得到的输出,我不确定 - 在这两种情况下我得到0.2E1。