ok, arrondissez à 1 chiffre significatif alors! haha
tarnfeld
3
Pour être juste, dans le titre, il est dit « rond jusqu'à un numéro le plus proche 10 », même si le texte dit « off tour » ... Je suis sûr qu'il est demandé de toujours autour jusqu'à la prochaine 10.
Aaron Wallentine
1
Arrondissez
Réponses:
219
floor() descendra.
ceil() va monter.
round() ira au plus proche par défaut.
Divisez par 10, faites le ceil, puis multipliez par 10 pour réduire les chiffres significatifs.
$number = ceil($input /10)*10;
Edit: Je le fais de cette façon depuis si longtemps ... mais la réponse de TallGreenTree est plus propre.
La réponse de TallGreenTree ne l'arrondit pas toujours. Cette réponse est la plus correcte avec l'utilisation de ceil ()
Brandon
1
La réponse de TallGreenTree prend en charge l'arrondi haut / bas en utilisant le troisième paramètre (mode) de round (). round ($ input, -1, PHP_ROUND_HALF_UP)
Daren Schwenke
4
@DarenSchwenke, ce troisième paramètre ne fonctionne pas tout à fait comme vous le supposez, cela ne contrôle que le cas exactement à mi-chemin entre les intervalles. (15,-1, PHP_ROUND_HALF_UP); // 20,(14,-1, PHP_ROUND_HALF_UP); // 10
Arth
168
round($number,-1);
Cela arrondira $ number au 10. Vous pouvez également passer une troisième variable si nécessaire pour changer le mode d'arrondi.
Pouvez-vous les blâmer d'avoir supposé que l'interlocuteur voulait dire «arrondir au 10 le plus proche» alors que la question disait «arrondir au 10 le plus proche» deux fois?
ceejayoz
Cette réponse a été publiée avant que l'intervenant ne se clarifie. J'ai juste pensé qu'il n'avait pas arrondi correctement la question.
TallGreenTree
12
TallGreenTree est correct. Vous pouvez définir le mode d'arrondi avec le 3ème argument: "mode One de PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN ou PHP_ROUND_HALF_ODD."
d -_- b
13
Cela ne donne pas le bon résultat. 23sera 20et non 30car il sera toujours rond au 10. Le mode d'arrondi n'aidera pas, puisque ce seul arrondi de moitié, après le x..
Timo002
1
Triste que ceil () et floor () n'aient pas encore le paramètre de précision.
squarecandy
15
Je cherchais en fait une fonction qui pourrait arrondir à la variable la plus proche, et cette page revenait sans cesse dans mes recherches. Donc, quand j'ai finalement fini par écrire la fonction moi-même, j'ai pensé que je la publierais ici pour que d'autres la trouvent.
La fonction arrondira à la variable la plus proche:
function roundToTheNearestAnything($value, $roundTo){
$mod = $value%$roundTo;return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);}
Kenny, tu es le meilleur. Je souhaite seulement avoir une représentation graphique de la façon dont il arrondit exactement, donc je suis sûr que cela donne les résultats attendus dans 100% des cas. Je suppose que je vais devoir faire des tests.
Alph.Dev
Existe-t-il un moyen de modifier ce code pour ajouter un troisième paramètre avec le mode rond HALF_UP / HALF_DOWN?
Alph.Dev
12
Il y a beaucoup de réponses à cette question, probablement toutes vous donneront la réponse que vous recherchez. Mais comme le mentionne @TallGreenTree, il existe une fonction pour cela.
Mais le problème de la réponse de @TallGreenTree est qu'il n'arrondit pas, il arrondit au 10. Pour résoudre cela, ajoutez +5à votre nombre afin d'arrondir. Si vous voulez arrondir, faites -5.
Donc dans le code:
round($num +5,-1);
Vous ne pouvez pas utiliser le round modepour arrondir, car cela arrondit uniquement les fractions et non les nombres entiers.
Si vous voulez arrondir au plus proche 100, vous devez utiliser +50.
Edit: Je ne savais pas (et ce n'est pas bien documenté sur le site) qui roundprend désormais en charge la précision "négative", donc vous pouvez plus facilement utiliser
$round = round($roundee,-1);
Modifier à nouveau: si vous voulez toujours arrondir, vous pouvez essayer
Ma première impulsion a été de chercher sur Google "php math" et j'ai découvert qu'il existe une fonction de bibliothèque mathématique de base appelée "round ()" qui est probablement ce que vous voulez.
Pour les personnes qui veulent le faire avec du SQL brut, sans utiliser php, java, python etc.
SET SQL_SAFE_UPDATES = 0;
UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
Je voulais arrondir au numéro suivant à la place des chiffres les plus grands (y a-t-il un nom pour cela?), Alors j'ai créé la fonction suivante (en php):
//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
Cela peut être facilement accompli en utilisant la fonction PHP ' fmod '. Le code ci-dessous est spécifique à 10 mais vous pouvez le changer en n'importe quel nombre.
Réponses:
floor()
descendra.ceil()
va monter.round()
ira au plus proche par défaut.Divisez par 10, faites le ceil, puis multipliez par 10 pour réduire les chiffres significatifs.
Edit: Je le fais de cette façon depuis si longtemps ... mais la réponse de TallGreenTree est plus propre.
la source
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
Cela arrondira $ number au 10. Vous pouvez également passer une troisième variable si nécessaire pour changer le mode d'arrondi.
Plus d'infos ici: http://php.net/manual/en/function.round.php
la source
23
sera20
et non30
car il sera toujours rond au 10. Le mode d'arrondi n'aidera pas, puisque ce seul arrondi de moitié, après lex.
.Je cherchais en fait une fonction qui pourrait arrondir à la variable la plus proche, et cette page revenait sans cesse dans mes recherches. Donc, quand j'ai finalement fini par écrire la fonction moi-même, j'ai pensé que je la publierais ici pour que d'autres la trouvent.
La fonction arrondira à la variable la plus proche:
Ce code:
Sortira:
la source
Il y a beaucoup de réponses à cette question, probablement toutes vous donneront la réponse que vous recherchez. Mais comme le mentionne @TallGreenTree, il existe une fonction pour cela.
Mais le problème de la réponse de @TallGreenTree est qu'il n'arrondit pas, il arrondit au 10. Pour résoudre cela, ajoutez
+5
à votre nombre afin d'arrondir. Si vous voulez arrondir, faites-5
.Donc dans le code:
Vous ne pouvez pas utiliser le
round mode
pour arrondir, car cela arrondit uniquement les fractions et non les nombres entiers.Si vous voulez arrondir au plus proche
100
, vous devez utiliser+50
.la source
div par 10 puis utiliser ceil puis mult par 10
http://php.net/manual/en/function.ceil.php
la source
Essayer
round(23, -1);
la source
On peut "tricher" via round avec
On peut aussi éviter de passer par la division en virgule flottante avec
Edit: Je ne savais pas (et ce n'est pas bien documenté sur le site) qui
round
prend désormais en charge la précision "négative", donc vous pouvez plus facilement utiliserModifier à nouveau: si vous voulez toujours arrondir, vous pouvez essayer
la source
la source
Essaye ça:
la source
Ma première impulsion a été de chercher sur Google "php math" et j'ai découvert qu'il existe une fonction de bibliothèque mathématique de base appelée "round ()" qui est probablement ce que vous voulez.
la source
Pour les personnes qui veulent le faire avec du SQL brut, sans utiliser php, java, python etc.
SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
la source
Je voulais arrondir au numéro suivant à la place des chiffres les plus grands (y a-t-il un nom pour cela?), Alors j'ai créé la fonction suivante (en php):
la source
la source
Cela peut être facilement accompli en utilisant la fonction PHP ' fmod '. Le code ci-dessous est spécifique à 10 mais vous pouvez le changer en n'importe quel nombre.
SORTIE: 100
la source
à 10 près, devrait être comme ci-dessous
la source
Essayez ceci ...... passez le nombre à arrondir et il arrondira au dixième près.
rond ($ num, 1);
la source