Des arrondis précis
CrazyCat » 16/ 02/2009 09:18
PHP
|
Envoyer à un ami |
Fil des commentaires de ce billet
Alors que la fonction round() permet d'avoir un certain nombre de décimales, les fonctions ceil() et floor() ne le permettent pas.
Ceci est génant lorsqu'on veut par exemple arrondir à la demi-valeur ou à un certain pas (0.25, 0.1, ...).
La petite classe qui suit permet de pallier ce manque: (Source php)
<?php /** * Ensemble de fonctionnalités utiles pour traiter les nombres * * @author "CrazyCat" * @since 2009-02-06 * @package Mephisto */ abstract class Math { /** * Arrondit à la précision supérieure * @param float $value Valeur à arrondir * @param float $precision Précision (défaut: 1) * @return float */ public function ceil($value,$precision=1) { $precision = abs(intval($precision)); if (($precision == 0) || ($precision == 1)) { $value = ceil($value); } else { $value = ceil($value/$precision)*$precision; } return $value; } /** * Arrondit à la précision inférieure * @param float $value Valeur à arrondir * @param float $precision Précision (défaut: 1) * @return float */ public function floor($value,$precision=1) { $precision = abs(intval($precision)); if (($precision == 0) || ($precision == 1)) { $value = floor($value); } else { $value = floor($value/$precision)*$precision; } return $value; } } ?>
Avec ceci, vous pouvez donc avoir un pas sur ces fonctions.
Utilisation
Math::ceil()
<?php Math::ceil(14.67, 0.5); // 15 echo Math::ceil(14.27, 0.5); // 14.5 echo Math::ceil(14.01, 0.25); // 14.25 ?>
Math:floor()
<?php echo Math::ceil(14.67, 0.5); // 14.5 echo Math::ceil(14.27, 0.5); // 14 echo Math::ceil(14.27, 0.25); // 14.25 ?>
Modification du billet: Voici la version JavaScript