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