Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 1 / 100 = 0,0100000000000000002
delphiprogrammierer - Fr 18.09.09 08:27
Titel: 1 / 100 = 0,0100000000000000002
Hallo,
ich benutze bei einem Kundenprojekt Delphi 7 und vergleiche zwei Float werte aus der Datenbank.
Bei folgendem Beispiel kommen unterschiedliche Ergebnisse raus :
Extended E := 1 / 100; // 0,01
Double D := 1 / 100; // 0,0100000000000000002
Hat das einen bestimmten Grund ?
Danke
Gausi - Fr 18.09.09 08:51
Das sind die üblichen Ungenauigkeiten bei Gleitkommatypen. Im Binärsystem kann man Werte wie "0,1" halt nicht exakt abbilden (probier mal durch aufsummieren von 1/2, 1/4, 1/8, etc. auf 1/10 zu kommen. ;-)). Float-Typen sollte man daher nie mit "=" überprüfen, sondern mit entsprechenden Funktionen wie IsZero oder IsEqual. Die überprüfen die Gleichheit abzüglich einer gewissen Toleranz, die durch das System vorgegeben ist.
delphiprogrammierer - Fr 18.09.09 15:15
erfahrene Programmierer wissen sollten :oops:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!