我認爲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
應該沒有參數,至少文檔。其次,如果該參數是精度,則4應該足夠進行此操作(或者至少我不應該知道11位精度是可以的)。
我想要的最後一件事是重新發明輪子,並創建一些我自己的「任意精確的平方庫」。
問題:
- 是否有可能參數設置爲一個BigDecimal實例,以使上述情況不會發生? (意思是:它以低精度給出正確的結果)
- 是否有關於BigDecimal對象的任何詳細信息(這些數字在值之後)?
系統:Debian的,32位,紅寶石1.9.3p125
你又問了什麼問題? (我明白你基本上使用這個問題來抱怨的問題,但我不確定你在Stack Overflow中尋找什麼幫助。)Just _「BigDecimal上的文檔在哪裏(http:// ruby-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html)"_? – Phrogz 2012-04-10 20:49:12
要使「無限精確」sqrt你需要無限的記憶。猜猜你沒有。那怎麼了? – 2012-04-10 20:52:23
@VictorMoroz我有很多的記憶,但令我沮喪的是,我無法測試所有這些,因爲我遇到這個問題,即4的平方根不是2,在一個任意精確的庫中。 – karatedog 2012-04-11 09:43:52