Frage

Wie können wir eine Zahl auf die nächste 10 in php abrunden?

Sagen wir, ich habe 23, welcher Code würde ich es abzurunden, um 30?

War es hilfreich?

Lösung

floor() wird nach unten gehen.

ceil() wird steigen.

round() wird zum nächsten automatisch voreingestellt.

Division durch 10, führen Sie die ceil, dann multiplizieren mit 10, um die signifikanten Stellen zu reduzieren.

$number = ceil($input / 10) * 10;

Edit: Ich habe schon so lange es auf diese Weise zu tun .. aber TallGreenTree Antwort ist sauberer

.

Andere Tipps

round($number, -1);

Dies wird $ Zahl auf den nächsten 10. Runden Sie können auch eine dritte Variable bei Bedarf übergeben, um den Rundungsmodus zu ändern.

Weitere Informationen hier: http://php.net/manual/en/function. round.php

Ich war auf der Suche tatsächlich eine Funktion, die auf die nächste Variable runden könnte, und diese Seite gehalten in meinen Recherchen kommen. Also, wenn ich endlich die Funktion selbst zu schreiben endete, dachte ich, ich würde es hier posten für andere zu finden.

Die Funktion wird rund um die nächste Variable:

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value%$roundTo;
    return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}

Mit diesem Code:

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';

Will Ausgabe:

1230
1235
1230
1169

Es gibt viele Anwers in dieser Frage, die wahrscheinlich alle geben Ihnen die Antwort, die Sie suchen. Aber wie @TallGreenTree erwähnt, gibt es eine Funktion für diese.

Aber das Problem der Antwort von @TallGreenTree ist, dass es nicht ist rund, es rundet zum nächsten 10. Um dies zu lösen, fügen Sie +5 auf Ihre Zahl um bis zu runden. Wenn Sie abrunden möchten, tun -5.

So in dem Code ein:

round($num + 5, -1);

Sie können nicht die round mode für Aufrundung verwenden, weil das nur Fraktionen abrundet und nicht ganze Zahlen sind.

Wenn Sie auf den nächsten 100 aufrunden wollen, Sie shoud +50 verwenden.

div um 10 dann mit ceil dann um 10 mult

http://php.net/manual/en/function.ceil.php

Versuchen

round(23, -1);

Wir können "betrügen" über Rund mit

$rounded = round($roundee / 10) * 10;

Wir können auch vermeiden, durch Gleitkommadivision gehen mit

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

Edit: Ich wusste nicht, (und es ist nicht gut auf der Website dokumentiert ist), dass round unterstützt nun „negative“ Präzision, so dass Sie leichter verwenden können,

$round = round($roundee, -1);

Bearbeiten wieder: Wenn Sie immer aufrunden möchten, können Sie versuchen

function roundUpToTen($roundee)
{
  $r = $roundee % 10;
  if ($r == 0)
    return $roundee;
  return $roundee + 10 - $r;    
}
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30

Versuchen Sie folgendes:

ceil($roundee / 10) * 10;

Just abrunden auf die nächsten 10 und dann 10 hinzuzufügen.

round($num, -1) + 10

Mein erster Impuls war für „php math“ to google und ich entdeckte, dass es einen Kern Mathematik-Bibliothek Funktion „round ()“ genannt, die wahrscheinlich ist, was Sie wollen.

Für Menschen, die es mit rohen SQL tun wollen, ohne mit PHP, Java, Python etc. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';

Ich wollte in der größten Ziffern Stelle zur nächsten Zahl aufrunden (gibt es einen Namen für das?), Also habe ich die folgende Funktion (in PHP):

//Get the max value to use in a graph scale axis, 
//given the max value in the graph
function getMaxScale($maxVal) {
    $maxInt = ceil($maxVal);
    $numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
    $dividend = pow(10,$numDigits);
    $maxScale= ceil($maxInt/ $dividend) * $dividend;
    return $maxScale;
}
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function

function roundToTheNearestAnything($value, $roundTo,$type='round')
    {
        $mod = $value%$roundTo;
        if($type=='round'){
            return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
        }elseif($type=='floor'){
            return $value+($mod<($roundTo/2)?-$mod:-$mod);
        }elseif($type=='ceil'){
            return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);
        }

    }

echo roundToTheNearestAnything(1872,25,'floor'); // 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil'); // 1875<br>
echo roundToTheNearestAnything(1872,25,'round'); // 1875

Dies kann leicht sein, PHP erreicht mit ' fmod ' Funktion. Der folgende Code ist spezifisch für 10, aber Sie können es beliebig ändern.

$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;

OUTPUT: 100

Versuchen Sie, diese ...... die Zahl passieren abgerundet werden, und es wird auf das nächste tenth.hope abrunden es hilft ....

Runde ($ num, 1);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top