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/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nichts scheint falsch zu sein mit der Berechnung, was die Kommentare auf deinen post sagte.
Wenn Sie möchten, um zu sehen, genauer betrachten, bis setprecision()
Ist es kein problem. Die bedeutende Figur von 0.00208333 und 3.12708 sind beide 6. Ist dies ein korrektes Ergebnis.
Manchmal, um den Wert entsprechend der gewünschten Präzision müssen wir festlegen, die Grenze der Präzision,hier ist mein code, welche gut funktioniert ,hoffe es hilft: