Um fair zu sein, in dem Titel, heißt es „rund bis eine Zahl nächste 10“, auch wenn der Text sagt „runde“ ... Ich bin ziemlich sicher , dass er fragt immer rund bis zum nächsten 10.
Die Antwort von TallGreenTree rundet es nicht immer ab. Diese Antwort ist die richtigste mit der Verwendung von Ceil ()
Brandon
1
Die Antwort von TallGreenTree unterstützt das Auf- und Abrunden mit dem dritten Parameter (Modus) von round (). Runde ($ Eingabe, -1, PHP_ROUND_HALF_UP)
Daren Schwenke
4
@DarenSchwenke, dieser dritte Parameter funktioniert nicht ganz so, wie Sie annehmen, er steuert nur den Fall genau in der Mitte zwischen den Intervallen. (15,-1, PHP_ROUND_HALF_UP); // 20,(14,-1, PHP_ROUND_HALF_UP); // 10
Arth
168
round($number,-1);
Dadurch wird die $ -Zahl auf die nächste 10 gerundet. Sie können bei Bedarf auch eine dritte Variable übergeben, um den Rundungsmodus zu ändern.
Können Sie ihnen die Schuld geben, dass der Fragesteller "auf die nächste 10 runden" meinte, wenn die Frage zweimal "auf die nächste 10 runden" lautete?
Ceejayoz
Diese Antwort wurde veröffentlicht, bevor sich der Fragesteller klarstellte. Ich dachte nur, dass er in der Frage nicht richtig rundet.
TallGreenTree
12
TallGreenTree ist korrekt. Sie können den Rundungsmodus mit dem dritten Argument festlegen: "Modus Eins von PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN oder PHP_ROUND_HALF_ODD."
d -_- b
13
Dies führt nicht zum richtigen Ergebnis. 23wird sein 20und nicht, 30weil es immer auf die nächste 10 rondiert. Der Rundungsmodus wird nicht helfen, da diese nur runde Hälfte nach dem x..
Timo002
1
Schade, dass Ceil () und Floor () noch nicht den Präzisionsparameter haben.
squarecandy
15
Ich suchte tatsächlich nach einer Funktion, die auf die nächste Variable gerundet werden konnte, und diese Seite tauchte bei meinen Suchen immer wieder auf. Als ich die Funktion schließlich selbst schrieb, dachte ich, ich würde sie hier veröffentlichen, damit andere sie finden können.
Die Funktion wird auf die nächste Variable gerundet:
function roundToTheNearestAnything($value, $roundTo){
$mod = $value%$roundTo;return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);}
Kenny, du bist der Beste. Ich wünschte nur, ich hätte eine grafische Darstellung, wie es genau rundet, also bin ich sicher, dass es in 100% der Fälle die erwarteten Ergebnisse liefert. Ich denke, ich muss ein paar Tests machen.
Alph.Dev
Gibt es eine Möglichkeit, diesen Code zu ändern, um einen dritten Parameter im Rundungsmodus HALF_UP / HALF_DOWN hinzuzufügen?
Alph.Dev
12
Es gibt viele Antworten in dieser Frage, wahrscheinlich geben Ihnen alle die Antwort, die Sie suchen. Aber wie @TallGreenTree erwähnt, gibt es dafür eine Funktion.
Das Problem bei der Antwort von @TallGreenTree ist jedoch, dass es nicht aufrundet, sondern auf die nächste 10 aufrundet. Um dies zu lösen, addieren Sie +5Ihre Zahl , um aufzurunden . Wenn Sie abrunden möchten, tun Sie dies -5.
Also im Code:
round($num +5,-1);
Sie können das nicht round modezum Aufrunden verwenden, da dies nur Brüche und keine ganzen Zahlen aufrundet.
Wenn Sie auf den nächsten 100aufrunden möchten , sollten Sie verwenden +50.
Bearbeiten: Ich wusste nicht (und es ist auf der Website nicht gut dokumentiert), dass es roundjetzt "negative" Präzision unterstützt, sodass Sie es einfacher verwenden können
$round = round($roundee,-1);
Erneut bearbeiten: Wenn Sie immer aufrunden möchten, können Sie es versuchen
Mein erster Impuls war, nach "PHP-Mathematik" zu googeln, und ich entdeckte, dass es eine Kernfunktion der Mathematikbibliothek namens "round ()" gibt, die wahrscheinlich genau das ist, was Sie wollen.
Für Leute, die es mit Raw SQL machen wollen, ohne PHP, Java, Python usw. zu verwenden.
SET SQL_SAFE_UPDATES = 0;
UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
Ich wollte auf die nächste Zahl an der Stelle mit den größten Ziffern aufrunden (gibt es einen Namen dafür?), Also habe ich die folgende Funktion (in PHP) gemacht:
//Get the max value to use in a graph scale axis, //given the max value in the graphfunction 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 functionfunction 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 mit der PHP -Funktion ' fmod ' erreicht werden. Der folgende Code ist spezifisch für 10, Sie können ihn jedoch in eine beliebige Zahl ändern.
Antworten:
floor()
Wird untergehen.ceil()
wird steigen.round()
wird standardmäßig zum nächsten gehen.Teilen Sie durch 10, machen Sie die Obergrenze und multiplizieren Sie dann mit 10, um die signifikanten Stellen zu reduzieren.
Edit: Ich mache das schon so lange so .. aber die Antwort von TallGreenTree ist sauberer.
quelle
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
Dadurch wird die $ -Zahl auf die nächste 10 gerundet. Sie können bei Bedarf auch eine dritte Variable übergeben, um den Rundungsmodus zu ändern.
Weitere Informationen hier: http://php.net/manual/en/function.round.php
quelle
23
wird sein20
und nicht,30
weil es immer auf die nächste 10 rondiert. Der Rundungsmodus wird nicht helfen, da diese nur runde Hälfte nach demx.
.Ich suchte tatsächlich nach einer Funktion, die auf die nächste Variable gerundet werden konnte, und diese Seite tauchte bei meinen Suchen immer wieder auf. Als ich die Funktion schließlich selbst schrieb, dachte ich, ich würde sie hier veröffentlichen, damit andere sie finden können.
Die Funktion wird auf die nächste Variable gerundet:
Dieser Code:
Wird ausgegeben:
quelle
Es gibt viele Antworten in dieser Frage, wahrscheinlich geben Ihnen alle die Antwort, die Sie suchen. Aber wie @TallGreenTree erwähnt, gibt es dafür eine Funktion.
Das Problem bei der Antwort von @TallGreenTree ist jedoch, dass es nicht aufrundet, sondern auf die nächste 10 aufrundet. Um dies zu lösen, addieren Sie
+5
Ihre Zahl , um aufzurunden . Wenn Sie abrunden möchten, tun Sie dies-5
.Also im Code:
Sie können das nicht
round mode
zum Aufrunden verwenden, da dies nur Brüche und keine ganzen Zahlen aufrundet.Wenn Sie auf den nächsten
100
aufrunden möchten , sollten Sie verwenden+50
.quelle
Div durch 10, dann Ceil, dann Mult durch 10
http://php.net/manual/en/function.ceil.php
quelle
Versuchen
round(23, -1);
quelle
Wir können per Runde mit "schummeln"
Wir können auch vermeiden, mit Gleitkommadivision zu gehen
Bearbeiten: Ich wusste nicht (und es ist auf der Website nicht gut dokumentiert), dass es
round
jetzt "negative" Präzision unterstützt, sodass Sie es einfacher verwenden könnenErneut bearbeiten: Wenn Sie immer aufrunden möchten, können Sie es versuchen
quelle
quelle
Versuche dies:
quelle
Mein erster Impuls war, nach "PHP-Mathematik" zu googeln, und ich entdeckte, dass es eine Kernfunktion der Mathematikbibliothek namens "round ()" gibt, die wahrscheinlich genau das ist, was Sie wollen.
quelle
Für Leute, die es mit Raw SQL machen wollen, ohne PHP, Java, Python usw. zu verwenden.
SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
quelle
Ich wollte auf die nächste Zahl an der Stelle mit den größten Ziffern aufrunden (gibt es einen Namen dafür?), Also habe ich die folgende Funktion (in PHP) gemacht:
quelle
quelle
Dies kann leicht mit der PHP -Funktion ' fmod ' erreicht werden. Der folgende Code ist spezifisch für 10, Sie können ihn jedoch in eine beliebige Zahl ändern.
AUSGABE: 100
quelle
bis zur nächsten 10 sollte wie folgt sein
quelle
Versuchen Sie dies ...... geben Sie die abzurundende Zahl ein und es wird auf das nächste Zehntel gerundet. Hoffentlich hilft es ....
rund ($ num, 1);
quelle