Hi Zusammen,
ich ermittele im Programm eine float Zahl (gespeichert in Variable a), die als 5.56776436283 ausgegeben wird (print a).
Wenn ich in der Python Konsole eingebe: 5.56776436283 * 5.56776436283, erhalte ich: 30.99999999999976
Wenn ich aber im Programm eingebe: print a * a (oder auch print 5.56776436283 * 5.56776436283) erhalte ich ein gerundetes Ergebnis, nämlich 31.0. Ich möchte aber das Ergebnis mit den ganzen Nachkommastellen haben.
Wo ist hier der Haken :K
Wo sind Nachkommastellen (float)?
Formatiere die Ausgabe explizit
oder nutze Python 3.
Code: Alles auswählen
from __future__ import print_function
print('{:.14f}'.format(a * a))
@Nachbar: float-Zahlen sind (fast) immer Näherungen. Du mußt selbst wissen, wie genau Du welche Zahlen bestimmen kannst, und dann entsprechend nur die Anzahl der signifikanten Stellen ausgeben. Python geht davon aus, dass eine Zahl mit zwölf 9en wohl eher ein 31 ist, weil das in 99.9% der Fälle für den normalen Nutzer sinnvoller ist. Deine Zahl sieht so aus, als ob sie in Wirklichkeit 5.5677643628300215... wäre und nur auf 11-13 Nachkommastellen gerundet wurde. Nehmen wir an, die Zahl wäre auf 12 Nachkommastellen gerundet, dann wäre die korrekte Ausgabe:
Code: Alles auswählen
>>> '{:.12f}'.format(5.56776436283*5.56776436283)
'31.000000000000'