Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Probleme mit Extended
Feivel1234 - Do 02.02.06 15:36
Titel: Probleme mit Extended
Hallo,
ich habe heute angefangen ein Programm zu schreiben, dass eine beliebige Funktion als Graphen darstellt! Bevor der Graph gezeichnet wird sollenn, die x un y Werte zunächst in zweo unterschiedliche Memofelder geschrieben werden!
Ich klapper also alle x-Werte in 0.1 Schritten ab und berechne den y-Wert!
Nur leider habe ich das Problem! Wenn x bei 0.0 angekommen ist erhält x den Wert 2,84603070277445E-19 und nicht 0!
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Repeat y := sin(x); mem_xwerte.lines.add(FloatToStr(x)); mem_ywerte.lines.add(FloatToStr(y)); x := x + 0.1; Until x >= 2.0; |
Danke schonmal im vorraus...
Simon
Moderiert von
Gausi: List- durch Delphi-Tags ersetzt
Delete - Do 02.02.06 15:45
Rechenungenauigkeit bei Fließkommazahlen.
Gausi - Do 02.02.06 15:45
Hallo,
2,84603070277445E-19, das ist dasselbe wie 0.00000000000000000084603070277445 - das ist so gut wie Null. Die Float-Datentypen haben generell den Nachteil, dass sie fast nie genau sind. Das hängt einerseits mit der begrenzten Speicherkapazität zusammen, andererseits auch mit der Darstellung im Binärsystem. Versuch z.B. mal die Zahl 0.1 exakt im Binärsystem darzustellen - du wirst scheitern. Deshalb sollte man auch Float-Typen nie mit "=" vergleichen.
Für die Amzeige solltest du dir mal FormatFloat anschauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!