Der Verlust der Genauigkeit auf hinzufügen verdoppelt?

Leute! Ich angetroffen habe ein kleines problem: ich mache eine einfache addition mit drei double-Werte. Das Ergebnis ist ungenauer als die verwendeten Werte.

double minutes = 3;
minutes = minutes / (24.0*60.0);  //contains 0.00208333
double hours = 3;
hours = hours / 24.0; //contains 0.125
double days = 3; //contains 3 

double age = days + hours + minutes; //result is 3.12708 

Ich keine Möglichkeit gefunden, dies zu vermeiden Verhalten.

  • Wie überprüfen Sie den Wert der Variablen?
  • Was ist das problem? Die Berechnung scheint ok. Wie drucken Sie das Ergebnis? Wollen Sie mehr Ziffern gedruckt?
  • beachten Sie, dass: 1) je nachdem, wie Sie die Ausgabe Ihrer Werte, sehen Sie möglicherweise nicht alle signifikanten Ziffern und 2) doubles sind nicht in der Lage, genau zu repräsentieren Werte wie 0.1
  • Re: Präzision: alle vier print-sechs signifikante Ziffern. Wo ist der Unterschied?
  • Ich bekomme 3.127083333333333. Scheint ungefähr richtig für mich.
  • Wie kommst du auf das Ergebnis? printf() %g %f?
  • möglich duplizieren-- stackoverflow.com/questions/554063/...

InformationsquelleAutor XQDev | 2013-06-20
Schreibe einen Kommentar