PHP Buchhalterisch / Kaufmännisch Rappen runden

Da es in der Schweiz in der Regel immer nur 5 – Rappen Schritte gibt (keine 1 – Rappen Schritte), muss man für Schweizer Anwendungen oftmals den Endbetrag sauber auf 5 Rappen genau runden. Dies gelingt ganz einfach mit den folgenden Zeilen:

$a = 1.12;  // Betrag in CHF
$tmp = (100*round($a, 2)) % 5;
if ($tmp == 0){
$chf = $a;
}else if ($tmp <= 2){
$chf = ($a - $tmp/100);
}else{
$chf = ($a + (5-$tmp)/100);
}
$rated = number_format((round(20*$chf))/20,2);
echo $rated;

coop@home - Test
Webperlen gesucht

6 Kommentare

  1. kim88

    Das hätt ich dir gleich sagen können … ^^

    Antworten
    • tom

      Danke für den geistreichen Kommentar ;-). Es ist ja auch nicht so, dass ich es nicht wusste, sondern mehr für die Nachwelt festhalten wollte 😛 immerhin wurde dieser Post via Google nach der Veröffentlichung bereits 57 mal angeschaut…
      Grüsse, tom

      Antworten
  2. kim88

    Rofl? echt? ^^ ich bin gernne Geistreich 😀 liegt wohl an meinem Bierkonsum oO

    Antworten
  3. tom

    jup, echt. mittlerweile sinds 215 unique visitors ;-). mensch ich hab dir schon immer gsagt du sollst immer nur ein fass bier auf einmal trinken. das genügt! 😛

    Antworten
  4. Nico

    Oder als Kurzvariante und Funktion:

    private function roundToNearest($value)
    {
    return round(($value + 0.000001) * 20) / 20;
    }

    Antworten
  5. Sebastian Schrepfer

    oder ganz einfach so:
    $value = 2.12;
    $rounded_value = round(2 * $value, 1) / 2;

    Antworten

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.