Ruby-float-Präzision

Wie ich es verstehe, Ruby (1.9.2) Schwimmer haben eine Genauigkeit von 15 Dezimalstellen. Daher würde ich erwarten, dass die Rundung float x zu 15 Dezimalstellen würde gleich x. Für diese Berechnung ist dies nicht der Fall.

x = (0.33 * 10)
x == x.round(15) # => false

Übrigens, Rundung auf 16 stellen den Wert true zurück.

Können Sie bitte erklären mir das an?

  • Aller Wahrscheinlichkeit nach, Ihre Sprache verwendet IEEE 754 double-precision-floating-point-zahlen intern. Die "15 Dezimalstellen" ist nur eine Annäherung, da floating-point-zahlen sind tatsächlich dargestellt in der Basis 2, nicht 10.
  • float-zahlen sind so schweben 🙂
  • Eine Frage zu floating-Genauigkeit, die ich nicht schließen wollen-hammer! +1.000000000001!
  • Ich Frage mich, warum können Sie == Fließkomma-zahlen, es ist eine Falle.
InformationsquelleAutor | 2011-09-05
Schreibe einen Kommentar