106 votes

Comment arrondir un nombre au 10 près?

Comment arrondir un nombre à 10 près en php?

Disons que j'ai 23 , quel code utiliserais-je pour arrondir à 30 ?

236voto

Daren Schwenke Points 2470

floor() va baisser.

ceil() va augmenter.

round() ira au plus proche par défaut.

Divisez par 10, faites le plafond, puis multipliez par 10 pour réduire les chiffres significatifs.

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

Edit: Je le fais depuis si longtemps ... mais la réponse de TallGreenTree est plus nette.

172voto

TallGreenTree Points 1359
 round($number, -1);
 

Cela arrondira $ nombre au 10 le plus proche. 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

17voto

Kenny Points 11

En fait, je cherchais une fonction pouvant arrondir à la variable la plus proche, et cette page revenait sans cesse dans mes recherches. Alors, quand j'ai finalement fini par écrire moi-même la fonction, j'ai pensé la poster ici pour que les autres puissent la trouver.

La fonction arrondira à la variable la plus proche:

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

Ce code:

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

Est-ce que la sortie:

 1230
1235
1230
1169
 

12voto

Timo002 Points 363

Il y a beaucoup de anwers dans cette question, probablement tous qui va vous donner la réponse que vous cherchez. Mais comme @TallGreenTree mentionne, il y a une fonction pour cela.

Mais le problème de la réponse de @TallGreenTree est qu'il n'est pas ronde, elle arrondit le plus proche 10. Pour résoudre ce problème, ajoutez +5 à votre numéro de compte afin de round up. Si vous voulez arrondir vers le bas, ne -5.

Donc, dans le code:

round($num + 5, -1);

Vous ne pouvez pas utiliser l' round mode pour les arrondis, parce que seules les tours jusqu'à des fractions et des nombres entiers pas.

Si vous voulez arrondir à l'entier supérieur 100, vous devriez utiliser +50.

7voto

John Nolan Points 16633

div par 10, puis utilisez ceil puis mult par 10

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X