Druck konstant 0.8804418
in FortranWarum wird die gleiche Gleitkommakonstante in Fortran und in C anders gedruckt?
program hello
print *, 0.8804418
end program hello
gibt 0.880441785
während die C-Version
#include <stdio.h>
int main() {
printf("%.10g", 0.8804418);
}
druckt 0.8804418
auf demselben System (Linux x86-64 mit gfortran und gcc). Warum ist die Ausgabe anders? Beachten Sie, dass die Erhöhung der Genauigkeit in printf
die Ausgabe nicht ändert.
Dies ist kein Duplikat von Is floating point math broken? oder ähnlichem. Diese Frage bezieht sich speziell auf Unterschiede in Fortran und C-Darstellung (oder Formatierung).
Wie ist das ein Duplikat? – vitaut
Es ist nicht genau dargestellt. Wenn es so wäre, hätte es die gleiche einfache und doppelte Mantisse. Sehr wenige Brüche, die in Dezimal geschrieben werden können, können auch genau in Basis 2 geschrieben werden. – DigitalRoss
@DigitalRoss Guter Punkt. Korrigiert. – vitaut