In php das ist was ich getan habe (inspiriert von diesem Beitrag). Vielleicht nicht die eleganteste, aber ... Ich habe eine Funktion zum Drucken von Zahlen als Strings gemacht. Ich wollte Flexibilität haben, also habe ich ein paar Parameter.
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
Und die Funktion aufgerufen werden (mindestens zwei Dezimalstellen zu haben, aber max 4:
print_num($mynum,2,true,4);
Wenn die Zahl 34,1, erhalten Sie 34,10
Wenn Die Nummer ist 34.12345 Sie erhalten 34.1235
usw.
Das Thema ist über Formatierung. Keine Rundung. Außerdem hat "toFixed" den Ruf, dass es in sich widersprüchlich ist, ob es auf oder abrundet. – Kafoso
Der Unterschied zwischen Formatierung und Rundung scheint semantisch zu sein, wenn es darum geht, den Wert auf eine bestimmte Anzahl von Dezimalstellen zu formatieren. Wenn Sie einige Besonderheiten bezüglich der Inkonsistenz von 'toFixed' haben, könnte das eine hilfreiche Ergänzung sein. – SimplGy