Jonas: Auf- und Abrundung

Hallo!
Ich würde gerne eine Zahl mit Php runden. Alles, was ich finde, sind
Rundungen wie 11,5567 zu 12 usw via floor, usw.

Ich möchte aber natürliche Zahlen einfach auf- bzw. abrunden, z.B. 112 auf 110, 116 auf 120.

Kann mir einer sagen, wie ich das mache?

Vielen Dank!!

  1. Hi Jonas,

    Ich würde gerne eine Zahl mit Php runden. Alles, was ich finde, sind
    Rundungen wie 11,5567 zu 12 usw via floor, usw.

    floor() rundet immer ab und ceil() rundet immer auf

    Ich möchte aber natürliche Zahlen einfach auf- bzw. abrunden, z.B. 112 auf 110, 116 auf 120.

    Hast du es schon mal mit round() probiert? Zwei Möglichkeiten die mir da spontan einfallen: 1) einen negativen zweiten Parameter übergeben, vl. rundet er dann auf Stellen vor dem Komman ansonsten 2) die Zahl erst durch 10 teilen, dann runden und wieder mit 10 multiplizieren.

    MfG, Dennis.

    1. Das "einfache" Runden, also durch zehn, Runden, multipliziert mit zehn, funktioniert nicht. Da komme ich immernoch auf derzeit 111.

      Ganz schön kompliziert für ne eigentlich wirklich einfache Rundung...

      Danke an alle!

      1. Hi Jonas,

        Das "einfache" Runden, also durch zehn, Runden, multipliziert mit zehn, funktioniert nicht. Da komme ich immernoch auf derzeit 111.

        Dann scheinst du etwas falsch zu machen - folgendes Script funktioniert bei mir einwandfrei:

        $zahl = 117;  
        $zahl = (float) $zahl;  
        $zahl = $zahl / 10;  
        $zahl = round($zahl);  
        $zahl = $zahl * 10;  
          
        echo $zahl;  
        // Ausgabe: 120
        

        Es funktioniert übrigens auch noch bei einem Auskommentieren der zweite Zeile.

        Ich hab grade noch ein bisschen weiter getestet - auch mein Vorschlag mit dem negativen Parameter für round() funktioniert tadellos:

        $zahl = 117;  
        $zahl = round($zahl, -1);  
          
        echo $zahl;  
        // Ausgabe: 120
        

        Sag mal, was hast du überhaupt ausprobiert?

        MfG, Dennis.

        1. Sag mal, was hast du überhaupt ausprobiert?

          [code lang=php]$zahl = 117;
          $zahl = (float) $zahl;
          $zahl = $zahl / 10;
          $zahl = round($zahl);
          $zahl = $zahl * 10;

          genau das, nur ohne float... bin schuldig...

          Vielen Dank!

  2. echo $begrüßung;

    Ich möchte aber natürliche Zahlen einfach auf- bzw. abrunden, z.B. 112 auf 110, 116 auf 120.

    Durch 10 teilen, dann runden und wieder mit 10 multiplizieren. Möglicherweise brauchst du explizite Typumwandlungen nach float. Das wirst du erkennen, wenn du mit var_dump() die Zwischenergebnisse betrachtest und statt Float-Werten Integer-Werte erhältst.

    Eine andere Möglichkeit wäre bei einer Integer-Division durch 10 den Rest zu ermitteln (Stichwort: modulo) und anhand dessen zu entscheiden, wohin gerundet werden soll.

    echo "$verabschiedung $name";