michael: zahl A auf das vielfache von zahl B abrunden

hallo alle zusammen,

vielleicht liegts an der späten stunde, vielleicht bin ich auch nur zu dämlich, aber ich habe ein problem auf das ich keine lösung finde...

also:

ich habe einen ganzzahligen wert $nummer (bspw. $nummer=17). ich habe einen weiteren wert $anzahl (bspw. $anzahl=5).

wie stelle ich es nun an, daß $nummer auf das "nächstgelegene" vielfache von $anzahl abgerundet wird. in meinem beispiel müßte ich also 17 ($nummer) auf 15 (3*$anzahl) abgerunden...? oder halt 28 abrunden auf 25, 31 abrunden auf 30, 126 auf 125 usw.

ich dache, vielleicht könnte floor() (ja, genau - php ;-)) irgendwie helfen, aber das gilt ja nur bei fließkommazahlen...

habt ihr da eine idee? ich sitze da echt wie der sprichwörtliche ochse vorm berg :-)

vielen dank für jede idee !!

grüße, michael

  1. Hallo,

    ich habe einen ganzzahligen wert $nummer (bspw. $nummer=17).
    ich habe einen weiteren wert $anzahl (bspw. $anzahl=5).

    wie stelle ich es nun an, daß $nummer auf das "nächstgelegene" vielfache von $anzahl abgerundet wird.
    in meinem beispiel müßte ich also 17 ($nummer) auf 15 (3*$anzahl) abgerunden...?
    oder halt 28 abrunden auf 25, 31 abrunden auf 30, 126 auf 125 usw.
    habt ihr da eine idee?

    Jep.

    $nummer = floor($number/$anzahl)*$anzahl;

    Das funktioniert genau so, wie auf 2 Stellen hinterm Komma runden,
    wenn man keine eigene Funktion dafür zu Verfügung hat:

    $nummer = round($number/100)*100;

    (ohne den zweiten Parameter)

    Hilft das weiter?

    Gruß
    Alexander Brock

    --
    SelfCode: ie:{ fl:{ br:> va:) ls:# fo:) rl:( n4:( ss:| de:> js:( ch:| sh:( mo:) zu:}
    http://emmanuel.dammerer.at/selfcode.html
    Deshalb können Pinguine nicht fliegen:
    Was nicht fliegt kann auch nicht abstürzen
    <img src="http://www.againsttcpa.com/images/AgainstTCPA-Log01Small.gif" border="0" alt="">
    http://againsttcpa.com
    1. Moin,

      Jep.

      $nummer = floor($number/$anzahl)*$anzahl;

      Naja, damit zieht man sich aber evt. Genauigkeitsprobleme mit Fließkommazahlen (Marke 15,000000001) zu. Einfacher und vielleicht auch schöner anzusehen ist da doch der modulo: $nummer = $number - $number % $anzahl

      --
      Henryk Plötz
      Grüße aus Berlin
      ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
      ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      1. morgen,

        vielen dank euch beiden. das hat mir enorm weitergeholfen !!

        glaube, auf so raffinierte lösungen wäre ich gestern nie und nimmer gekommen .... (heute wahrscheinlich auch nicht) ;-)