2016-06-29 10 views
2

Das Zahlenformat fügt die Kommata hinzu, die ich möchte, entfernt aber die Dezimalstellen.Verhindern Sie, dass number_format von Zahlen abgerundet wird - fügen Sie Kommas hinzu und behalten Sie den Dezimalpunkt bei - PHP

echo number_format("1000000.25"); 

Das gibt 1.000.000

ich es 1,000,000.25

Ich brauche sowohl die Kommas und die Dezimalstellen zurückkehren möchten, ohne eine beliebige Zahl gerundet wird. Alle meine Werte sind Dezimalzahlen. Sie variieren in der Länge.

Muss ich etwas anderes als das Zahlenformat verwenden?

Antwort

7

Im Fall, was Sie meinten von sie variieren in der Länge zur Nachkommastelle verwandt ist, werfen Sie einen Blick auf diesen Code:

function getLen($var){ 
    $tmp = explode('.', $var); 
    if(count($tmp)>1){ 
     return strlen($tmp[1]); 
    } 
} 
$var = '1000000.255555'; // '1000000.25'; // '1000000'; 
echo number_format($var, getLen($var)); 


Einige Tests

  • Ausgang für 1000000.255555 :

1,000,000.255555


Ausgang für 1000000.25:

1,000,000.25


Ausgang für 1000000:

1.000.000


Es zählt, wie viele Zeichen gibt es nach dem . und verwendet diese als Argument in der number_format Funktion;

Ansonsten verwenden Sie einfach eine konstante Zahl anstelle des Funktionsaufrufs.


Und einige Referenz ...


Vom manual ->number_format():

string number_format (float $number [, int $decimals = 0 ]) 

Und Sie können in der Beschreibung, dass

Nummer
Die Zahl formatiert wird .

Dezimalstellen
Legt die Anzahl der Dezimalstellen.

Und ein bisschen mehr:

[...] Wenn zwei Parameter angegeben werden, die Anzahl wird mit Dezimalstellen Dezimalstellen mit einem Punkt („“) vor formatiert werden, und ein Komma (",") zwischen jeder Gruppe von Tausenden.

5
$number = '1000000.25'; 
echo number_format($number, strlen(substr(strrchr($number, "."), 1))); 

Erläuterung: Nummer Format nimmt einen zweiten Parameter welche die Anzahl der erforderlichen Dezimalstellen angibt, wie in der docs angegeben. This Stack Overflow Antwort sagt Ihnen, wie Sie die Anzahl der Dezimalstellen der bereitgestellten Zeichenfolge

+0

bekommen Nizza, ich habe nicht daran gedacht, einen Weg, um die Len xD zu bekommen. Kühle Lösung – FirstOne