Frage zu einer Programmierung? (Allgemeines)

Maik Herber, Fri, 11.12.2009, 10:10 (vor 5252 Tagen)

Hallo

Kann mir mal bitte versuchen das zu erklären?

also bei folgendem code

float x = 0.9f - 0.8f;
console.writeline ("float: " +x);


bekomme ich als ergebnis:
float: 0,09999996

Wieso muss da nicht 0.1 raus kommen????

Dualsystem

Martin Vogel ⌂ @, Dortmund / Bochum, Thu, 22.09.2016, 18:52 (vor 2775 Tagen) @ Maik Herber

float x = 0.9f - 0.8f;
float: 0,09999996
Wieso muss da nicht 0.1 raus kommen????

Weil die Zahl intern nicht im Dezimalsystem verarbeitet wird. Wenn die verwendete Programmiersprache nur mit acht Stellen Genauigkeit rechnet, treten beim Umwandeln vom und ins Dualsystem schon recht früh solche Rundungsfehler auf.

https://de.wikipedia.org/wiki/Gleitkommazahl
http://www.know-about.de/binaerzahlen

--
Dipl.-Ing. Martin Vogel
Leiter des Bauforums

Bücher:
CAD mit BricsCAD
Bauinformatik mit Python

Dann noch eine Frage

Maik Herber, Fri, 11.12.2009, 10:51 (vor 5252 Tagen) @ Martin Vogel

Weil die Zahl intern nicht im Dezimalsystem verarbeitet wird. Wenn die
verwendete Programmiersprache nur mit acht Stellen Genauigkeit rechnet,
treten beim Umwandeln vom und ins Dualsystem schon recht früh solche
Rundungsfehler auf.

danke für die schnelle antwort.

Wäre es dann sinnvoller mit "decimal" zu rechnen und könnte man dann den zu erwartenden Rundungsfehler "vernachlässigen"? Oder sollte man die Zahlen in Binärzahlen umwandeln, und dann wieder zurückverwandeln?

Die Sinnfrage der Rechengenauigkeit

Martin Vogel ⌂ @, Dortmund / Bochum, Fri, 11.12.2009, 12:28 (vor 5252 Tagen) @ Maik Herber

Wäre es dann sinnvoller mit "decimal" zu rechnen und könnte man dann den
zu erwartenden Rundungsfehler "vernachlässigen"? Oder sollte man die
Zahlen in Binärzahlen umwandeln, und dann wieder zurückverwandeln?

Das hängt von der jeweiligen Rechnung ab. Wenn regelmäßig Divisionen durch die Differenz zweier fast betragsgleicher Zahlen stattfinden (am besten noch während einer vieltausendfach durchlaufenen Schleife), kann die Genauigkeit kaum hoch genug sein. In anderen Fällen ist möglicherweise alles nach der dritten signifikanten Stelle schon ohne Bedeutung.

--
Dipl.-Ing. Martin Vogel
Leiter des Bauforums

Bücher:
CAD mit BricsCAD
Bauinformatik mit Python

RSS-Feed dieser Diskussion
powered by my little forum