Bezieht sich auf die Dokumentation von BigDecimal
class,
n,m = a.precs
prec
gibt die Anzahl der signifikanten Ziffern (n
) und zurück maximale Anzahl von signifikanten Ziffern (m
) vona
.
Ich bin verwirrt über die folgende Ausgabe in Bezug auf BigDecimal
.
Ich kann nicht herausfinden, warum, wenn ein String
übergeben wird, die maximale Anzahl von signifikanten Ziffern geringer ist, als wenn ein Fixnum
übergeben wird.
Führt es auch zu Genauigkeitsproblemen?
Wenn Sie C-Code lesen können, können Sie bei Ссылка - Das ist der Initialisierer für jedes BigDecimal
-Objekt. Wenn Sie diesem Code zur nächsten Methode folgen, ist BigDecimal_new Sie werden feststellen, dass bei der Übergabe eines Integer-Arguments noch ein paar weitere Schritte durchlaufen werden müssen, bevor ein internes großes Dezimal-Objekt zugewiesen und erstellt wird, im Gegensatz zur Übergabe eines String-Arguments.
In jedem Fall sollten Sie sich keine Gedanken über den Genauigkeitsverlust machen - die signifikanten Ziffern-Attribute sind mehr wie Hinweise als absolute Werte. Sogar die Dokumentation erwähnt es: Die tatsächliche Anzahl der signifikanten Stellen, die bei der Berechnung verwendet werden, ist normalerweise größer als die angegebene Anzahl.
Tags und Links ruby precision floating-accuracy