1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| function scalenumber($n) {
if ($n == 0) return 0;
// Ajout de la décimale si elle n'existe pas
if (!preg_match("/([0-9]+)[.,]([0-9])/", $n)) {
$n = $n.",0";
}
// Regarde la partie décimale et entière
list($int, $decimal) = split('[.,]', $n);
$n = ceil(($int.$decimal) / 10);
while($n >= 10) {
// Tant que le nombre est supérieur à 10
// On divise par 10, et on arrondie au supérieur
$n = $n / 10;
$n = ceil($n);
}
// Cas particulier: on passe de 9** à 10** (sinon 9 retournerait 1)
$n = ($int[0] == 9) ? $n * 10 : $n;
if ($int != 0) {
// On regarde combien de dizaines possède $n:
// on multiplie par celui-ci le chiffre arrondi retourné
// Si $n = 1100, $nretourne = 2 et $nfinal = 2000
for ($i = 1; $i < strlen($int); $i++) {
$n = $n * 10;
}
} else {
// Cas particulier, 0 < $n < 1
ereg("^(0+)([0-9]+)$", $int.$decimal, $reg);
$n = ($reg[2][0] == 9) ? $n * 10: $n; // Cas particulier: on passe de 9** à 10** (sinon 0.9 retournerait 0.1)
$x = "1".$reg[1];
$n = $n / $x;
}
return $n;
} |