Question

Comment arrondir un nombre à la dizaine près en php?

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

Était-ce utile?

La solution

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;

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

Autres conseils

round($number, -1);

Ceci 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/fr/function. round.php

Je cherchais en fait une fonction qui pourrait être arrondie à la variable la plus proche et cette page revenait sans cesse dans mes recherches. Alors, quand j'ai fini par écrire moi-même la fonction, je pensais la poster ici pour que les 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);
}

Ce code:

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

affichera:

1230
1235
1230
1169

Il y a beaucoup de réponses à cette question, probablement toutes vous donneront la réponse que vous cherchez. Mais comme @TallGreenTree le mentionne, 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 le plus proche. Pour résoudre ce problème, ajoutez +5 à votre numéro afin d’arrondir . Si vous voulez arrondir à la baisse, faites -5 .

Donc dans le code:

round($num + 5, -1);

Vous ne pouvez pas utiliser le mode arrondi pour arrondir les résultats, car il arrondit uniquement les fractions et non les nombres entiers.

Si vous souhaitez arrondir au 100 le plus proche, vous devez utiliser +50 .

div par 10 puis utilisez ceil puis mult par 10

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

Essayez

round (23, -1);

Nous pouvons "tricher". via tour avec

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

Nous pouvons également éviter de passer par la division en virgule flottante avec

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

Éditer: je ne savais pas (et ce n'est pas bien documenté sur le site) que round prend désormais en charge le paramètre "négatif". précision, de sorte que vous pouvez plus facilement utiliser

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

Modifier à nouveau: si vous voulez toujours arrondir, vous pouvez essayer

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

Essayez ceci:

ceil($roundee / 10) * 10;

Arrondissez simplement au 10 le plus proche, puis ajoutez-en 10.

round($num, -1) + 10

Mon premier réflexe a été de rechercher Google sur "php math". et j’ai découvert qu’il existait une fonction de base de la bibliothèque mathématique appelée "round ()" c'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 valeur = ceil (valeur / 10) * 10 où la valeur ne ressemble pas à '% 0';

Je voulais arrondir le nombre suivant au plus grand chiffre (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 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

Ceci peut être facilement réalisé à l'aide de la fonction PHP fmod . Le code ci-dessous est spécifique à 10 mais vous pouvez le remplacer par n’importe quel nombre.

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

SORTIE: 100

Essayez ceci ...... indiquez le nombre à arrondir et il sera arrondi au dixième près. J'espère que cela vous aidera ....

round ($ num, 1);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top