En php c'est ce que j'ai fait (inspiré par ce post). Peut-être pas le plus élégant mais ... J'ai fait une fonction pour l'impression des nombres en tant que chaînes. Je voulais pouvoir avoir de la flexibilité, donc j'ai quelques paramètres.
PHP:
function print_num($num,$numdec,$atleast = false,$max_dec = -1)
{
$ret_norm = false;
if (!$atleast)
$ret_norm = true;
else //atleast = true
{
//Want at least $numdec decimals
//Do we have two or fewer and want to return two or fewer?
if ($num == ((int)($num*100)/100) & $numdec <= 2)
$ret_norm = true;
else
{
//See if we have enough dec. already
$just_dec = substr((string)$num,strpos((string)$num,".") + 1);
if ($numdec >= strlen($just_dec))
$ret_norm = true;
else
{
//More decimals than at least value - make sure we don't go over max if set
if ($max_dec >= 0 && strlen($just_dec) > $max_dec)
{
//Confine to max_dec length
$ret_norm = true;
$numdec = $max_dec; //Set for sprintf below
$num = number_format($num,$max_dec); //Round the value so doesn't just chop off
}
else if ($max_dec >= 0)
$ret_norm = false;
} //else
} //else
} //else atlest
if ($ret_norm)
return sprintf("%0.".$numdec."f",$num);
else
return sprintf("%s",$num); //print as is
} //print_num
Et pour appeler la fonction (avoir au moins deux décimales, mais max 4:
print_num($mynum,2,true,4);
Si le nombre est de 34,1, vous obtenez 34,10
Si le nombre est 34.12345 vous obtenez 34.1235
etc.
Le sujet concerne le formatage. Ne pas arrondir En outre, 'toFixed' a la réputation d'être follement inconsistante quant à savoir si elle arrondit vers le haut ou vers le bas. – Kafoso
La différence entre la mise en forme et l'arrondi semble sémantique lorsque la question concerne la mise en valeur d'un certain nombre de décimales. Si vous avez des détails sur l'incohérence de 'toFixed', cela pourrait être utile. – SimplGy