steffen: Verwirrung bei PHP (Rechnung)

Beitrag lesen

Hi, habe ein Script gebastelt das ein kleiner Rechner ist nun habe ich ein wirklich unerfreuliches Erlebnis!

Ich errechne mir 2 Werte! ($s1 sowie $s2) Wenn ich nun $s1 den Wert direkt zuweise (1.10526315789) funktioniert die Rechnung, aber lasse ich mir diesen Wert ausrechnen stimmt dieser nicht o_O

Vielleicht weiß jemand die Erklärung wieso?

<?
$go=1;
$a=34;
$v=19;
$lp=21;
$gegnera=38;
$gegnerv=15;
$gegnerlp=21;
$s1=$gegnerlp/($a-$gegnerv); // Dieser Wert ist 1.10526315789
$s2=$lp/($gegnera-$v);

function test($gegnera,$v){

if($gegnera-$v<1){ return 1; } else { return $gegnera-$v; }
        }

function test2($a,$gegnerv){

if($a-$gegnerv<1){ return 1; } else { return $a-$gegnerv; }
        }

if ($go){

echo "s1 = ".$s1."<br>";
  echo "s2 = ".$s2."<br>";

if($s1>$s2) {

echo "<b><font color="red">Du verlierst!</font> Dein Gegner überlebt mit ".floor($gegnerlp-(test2($a,$gegnerv)*$s2))." LP</b>";
                } else {
   echo $lp."<br>";
   echo (test($gegnera,$v)*$s1)."<br>";
   echo ($lp-(test($gegnera,$v)*$s1))."<br>";
                        echo floor($lp-(test($gegnera,$v)*$s1));
                }

}

?>

Lasse ich mir den Wert ausrechnen gibt er das aus:

s1 = 1.10526315789
s2 = 1.10526315789
21
21
-3.5527136788E-15
-1

gebe ich den Wert direkt ein kommt das dabei heraus:

s1 = 1.10526315789
s2 = 1.10526315789
21
20.9999999999
8.99973429114E-11
0

Das letztere ist das eigentliche Ergebnis das rauskommen soll ... Wieso passiert das?

mfg steffen