PHP größer gleich in Schleife

Sarius87

Banned
Registriert
Mai 2016
Beiträge
888
hallo, folgendes problem :

PHP:
$Start=0.03;

$counter=0;


while ($Start >= 0.01){
    $counter++;
	$Start=$Start-0.01;
	echo "+1 - Start ist $Start<br>";
}

echo "<br>counter: $counter";


normal müsste hier doch counter = 3 sein, doch er zählt nur 2x, wieso ?? beim letzten mal ist es 0.01 , also größer oder gleich 0.01 ... diese ausgaben erhalte ich :

Code:
+1 - Start ist 0.02
+1 - Start ist 0.01

counter: 2


verstehe das nicht. und nutze ich >= 0.00 ist $Start am Ende "-3.4694469519536E-18", hä ??
 
Der PC kann Kommazahlen halt nicht genau verarbeiten, desshalb auch die -3.4694469519536E-18, die ja "quasi" 0 sind. Ich vermute auch das das der Grund ist, warum die Schleife nur 2 mal läuft. Versuch wo es geht mit Ganzzahlen zu arbeiten. Du kannst ja mal probieren:
start=3
als schleifen Bedingung: start >= 1
und in der schleife: start = start -1
und guck was da raus kommt

0.03 wird zum Beispiel genau genommen als "0.02999999932944774627685546875" gespeichert.
Edit: Stimmt nicht ganz, das wäre als 32bit variable, php scheint 64bit zu benutzen, also noch genauer, aber der Gedanke dahinter sollte rüber kommen.
 
Zuletzt bearbeitet:
Zurück
Oben