Ich dachte, dass der Zweck von Rubys BigDecimal-Klasse ist, dass es
unendlich
beliebig präzise auf Kosten der Geschwindigkeit ist. Falsch:Quadratwurzel in Ruby mit mehr Genauigkeit als BigDecimal.sqrt?
> BigDecimal(4).sqrt(4)
=> #<BigDecimal:906602c,'0.1999999999 9999999998 66602351E1',36(36)>
> BigDecimal(4).sqrt(11)
=> #<BigDecimal:9e36850,'0.2E1',9(45)>
Zuerst sqrt
sollte ohne Parameter arbeiten, zumindest von der Dokumentation. Zweitens, wenn dieser Parameter die Genauigkeit ist, sollte 4 für diese Operation ausreichen (oder zumindest sollte ich nicht wissen, dass die 11-stellige Genauigkeit in Ordnung ist).
Das Letzte, was ich will, ist das Rad neu zu erfinden und eine eigene 'beliebig genaue Quadrierungsbibliothek' zu erstellen.
Fragen:
- Ist es möglich, Parameter zu einer BigDecimal-Instanz festgelegt, so dass die oben nicht geschieht? (Bedeutung: Es gibt ein korrektes Ergebnis bei niedriger Genauigkeit zurück)
- Gibt es detaillierte Informationen zum BigDecimal-Objekt (was sind diese Zahlen nach dem Wert)?
System: Debian, 32-bit, Rubin 1.9.3p125
Was ist deine Frage noch einmal? (Ich verstehe das Problem, dass Sie diese Frage grundsätzlich verwenden, um sich zu beschweren, aber ich bin nicht sicher, welche Hilfe Sie von Stack Overflow suchen.) Nur _ "wo sind [die Dokumente auf BigDecimal] (http: // rubi-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html)"_? – Phrogz
Um "unendlich präzise" sqrt zu machen, braucht man unendlich viel Speicher. Ich nehme an, du hast es nicht. Was ist dann falsch? –
@VictorMoroz Ich habe viel Speicher, aber zu meiner Bestürzung konnte ich nicht alles testen, als ich auf dieses Problem stoße, dass die Quadratwurzel von 4 nicht 2 ist, in einer beliebig genauen Bibliothek. – karatedog