Gunnar Bittersmann: PHP Auf nächsten Hunderter aufrunden

Beitrag lesen

@@Der Martin

Ich würde noch einen Schritt weiter gehen und die Stelle, auf die ich runden möchte, als zweiten Parameter übergeben - eventuell mit einem Defaultwert von 0 für "Runden auf Einerstelle".

Yep. Und zwar analog zum Parameter precision bei der round()Funktion.

Und ich würde die Funktion auch nicht round_up nennen, sondern bspw. ceilPrecision:
float ceilPrecision ( float $val [, int $precision = 0 ]).

function ceilPrecision($val, $precision = 0)
{
  return ceil($val * pow(10, $precision)) / pow(10, $precision);
}

Kann es da nicht evtl. beim Potenzieren, Multiplizieren und Dividieren zu unschönen Fehlern kommen? (Dezimalsystem vs. Binärsystem) Vielleicht doch besser so?

function ceilPrecision($val, $precision = 0)
{
  return round(ceil($val * pow(10, $precision)) / pow(10, $precision), $precision);
}

Aufruf:

ceilPrecision(0.01, -2);   // 100
ceilPrecision(10, -2);     // 100
ceilPrecision(50, -2);     // 100
ceilPrecision(100.01, -2); // 200

LLAP 🖖

--
“You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|