phpbar.de logo

Mailinglisten-Archive

[php] Modulus funktioniert nicht

[php] Modulus funktioniert nicht

Oliver Fink OF_(at)_netuse.de
Thu, 10 Aug 2000 16:36:47 +0200


Hi!

Thomas Wagner schrieb:

> Daniel Jänecke wrote:
> > weil modulo den rest bei einer division zurückgibt; also zB 5:2 = 2 Rest 1,
> > also 5 % 2 = 1; wenn ich durch 1 teile, gibt's keinen Rest ...
> Versteh ich nicht so ganz.
>
> Delphi und andere Sprachen geben mir bei 6.5 % 1 immer 0.5 zurück.
> Sogar der Taschenrechner von Windows.
>
> Kann das Problem auch anders lösen, mich interessiert nur das warum und
> wieso.

Was ich nicht verstehe, ist, wieso man Modulo auf Werte vom Typ REAL anwenden
will. Das ist eine Funktion, die den Rest einer Division ausgibt. Bei INT gibt es
einen Rest, wenn das Ergebnis wieder INT sein soll. Damit ist 5 % 2 der Rest von
5\2 (Ganzzahldivision), also 1. Bei REAL ist der Rest immer Null, weil ich 7,5 /
3,2 = 2,34375 teilen kann und im Werteraum von REAL bleibt ein Rest von 0,0. Wie
man sieht, ist Modulo für REAL-Werte ziemlich merkbefreit und man kann auf zwei
Arten an das Problem rangehen:

  1. Man definert REAL % REAL = 0. Das macht Sinn.
  2. Man wandelt die Wert nach INT (runden oder abschneiden) und führt dann einen
     Modulo aus. Meiner Meinung nach weniger sinnvoll.

Was macht der wunderbare Taschenrechner bei meinem Beispiel 7,5 % 3,2? Das
Ergebnis ist: 1,1. Ist das Vorkommastellen und Nachkommastellen getrennt mit
Modulo behandelt? Ich weiß es nicht, was da gerechnet wird. Aber es erreicht IMHO
hohe Werte auf der nach oben offenen Merkbefreiungsskala...

PHP scheint nach Methode 2 zu verfahren, denn dort ist 7,5 % 3,2 = 1.

Gruß

    Oliver
--
Oliver Fink
NetUSE AG, Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00   --   Fax: +49 431 386435 99




php::bar PHP Wiki   -   Listenarchive