MODULUS ARBEITET FALSCH
Nicole
- php
0 Nicole [ JETZT ABER ]0 RobiC0 Antje Hofmann0 RobiC
0 Christian Seiler0 Nicole
Hallo erst mal ;-)
Ich versuche gerade etwas zu schreiben aber dann kommt:
Posting unsauber ???
Hallo erst mal ;-)
Ich versuche gerade etwas zu schreiben aber dann kommt:
Posting unsauber ???
Darf anscheinend keine 3 Fragezeichen im Betreff angeben, kurios.
Also hier nun mein Problem:
Hallo erst mal ;-)
Ich nutze gern, vor allem in Schleifen,
den Modulus wert.
Jetzt fiel mir auf, dass dieser nicht korrekt arbeitet
ab einer gewissen Grösse.
12345678900 % 12345678800
ERGEBNISS SOLLTE 100 sein !!!IST ES ABER NICHT!"
Kennt jemand das Problem ?
<?PHP
echo $modulus=(123456789 % 123456780);
echo " => ERGEBNISS SOLLTE 9 sein !";
echo "<br>";
echo $modulus=(1234567890 % 1234567880);
echo " => ERGEBNISS SOLLTE 10 sein !";
echo "<br>";
echo $modulus=(12345678900 % 12345678800);
echo " => ERGEBNISS SOLLTE 100 sein !!!IST ES ABER NICHT!";
echo "<br>";
?>
Vielleicht liegts ja auch an meiner alten PHP Version 4.03
Gruss Nikki
Vielleicht liegts ja auch an meiner alten PHP Version 4.03
Gruss Nikki
Liegt an PHP allgemein. Du kannst Mod nur auf integer anwenden. Leider haben die PHP-Entwickler versäumt eine Typenumwandlung vor zunehmen, wenn Zahlen größer als integer berrechnet werden. Da kommst du um einen Workaround nicht herum.
Grüße
Robi
Hallo Nicole, hallo Robi
Liegt an PHP allgemein. Du kannst Mod nur auf integer anwenden. Leider haben die PHP-Entwickler versäumt eine Typenumwandlung vor zunehmen, wenn Zahlen größer als integer berrechnet werden. Da kommst du um einen Workaround nicht herum.
:-) den gibt es schon.
http://www.php.net/manual/de/ref.bc.php bzw. für das aktuelle Problem http://www.php.net/manual/de/function.bcmod.php
Viele Grüße
Antje
Hallo Nicole, hallo Robi
Liegt an PHP allgemein. Du kannst Mod nur auf integer anwenden. Leider haben die PHP-Entwickler versäumt eine Typenumwandlung vor zunehmen, wenn Zahlen größer als integer berrechnet werden. Da kommst du um einen Workaround nicht herum.
:-) den gibt es schon.
http://www.php.net/manual/de/ref.bc.php bzw. für das aktuelle Problem http://www.php.net/manual/de/function.bcmod.php
Viele Grüße
Antje
Hab ich dann auch gefunden. Trotzdem danke ;)
Hallo Nicole,
Darf anscheinend keine 3 Fragezeichen im Betreff angeben, kurios.
Nunja, nach der Deutschen Rechtschreibung sollte nur ein Fragezeichen nach einer Frage stehen.
Vielleicht liegts ja auch an meiner alten PHP Version 4.03
Nein. Bei PHP 4.3.0 bei mir ist dem auch so. In Perl und in C passiert das nicht, daher ist das kein Überlaufproblem, zumindest nicht vom Betriebsystem her. Scheint ein Bug zu sein. Melde ihn bitte, dann ist er vielleicht in der nächsten Version korrigiert. Bis dahin kannst Du diese Funktion verwenden:
function modulus ($zahl, $divisor) {
while ($zahl > $divisor)
$zahl -= $divisor;
return $zahl;
}
Viele Grüße,
Christian
Vielen Dank Christian,
zuviel des Guten ;-)
Habe natürlich auch schon eine func. geschrieben,
aber wollte wissen ob es wirklich an PHP liegt.
function fmodulus($num,$mod){
$x=floor(($num/$mod)); // 13/5=2 13-(2*5)=3
$modulus=($num -($x*$mod));
return $modulus;
}
function modulus ($zahl, $divisor) {
while ($zahl > $divisor)
$zahl -= $divisor;
return $zahl;
}
Gruss Nikki