2016-03-23 12 views
1

Gibt es in PHP eine Möglichkeit, einen Float-Wert (keine Zeichenfolge) mit zwei Dezimalstellen zu haben, wenn es sich um Nullen handelt?PHP - Float-Wert mit zwei Dezimalstellen

Beispiel:

$v = 1.50 

Mit (float) oder floatval($v) würde die Zahl als 1.5

kehre ich bekommen, dass ich number_format() für eine beliebige Präzision verwenden können, aber das wäre eine Zeichenfolge zurück, und sobald ich geworfen es zu einem Floaten, ich traf das gleiche Problem.

+0

Es macht nicht jeder Sinn, ein schwimmendes zu betrachten Punktnummer mit mehr Dezimalstellen als benötigt. Es wäre immer noch genau der gleiche Wert. Es macht nur Sinn, wenn Sie es irgendwo anzeigen. Dafür steht 'number_format()'. – mikeyq6

+0

Ja, das ist, was ich tun müsste, zeigen Sie es irgendwo, als float – Carlo

+0

können Sie 'round()' [http://php.net/manual/es/function.round.php](http:// php.net/manual/es/function.round.php) – miglio

Antwort

2

Kurze Antwort ist, können Sie nicht. Die Variable (als float) enthält nur das Datum und 1.5 oder 1.50 ist genau das gleiche und intern wird es als floating point number gespeichert.

können Sie den Wert sehen gedruckt als 1.5 oder 1.50 nur, wenn es in eine Zeichenfolge konvertiert ist, explizit (mit number_format()) oder implizit (Drucken direkt die Variable oder den Wert in dem Debugger Inspektion). Sie sollten number_format() verwenden, wenn Sie den Wert als Zeichenfolge schreiben möchten.

+0

Danke für die Infos – Carlo

0

Dies kann Ihnen helfen werden:

Beispiel:

$foo = "105"; 

echo number_format((float)$foo, 2, '.', ''); // Outputs -> 105.00 
+0

, die eine Zeichenfolge – Carlo

0

das ist eine andere Art und Weise:

$num = 1.2; 
$dec = 2; 
echo sprintf('%0.'.$dec.'f', round($num, $dec)); 

Antwort:

1,20

+0

zurückgibt, das ist das selbe wie sprintf ('%. 2f', $ num); und es gibt eine Zeichenfolge – Carlo

+0

@Carlo Runde gehen innere sprintf wie Beispiel 'sprintf ('%. 2f', Runde ($ num, 2))' – miglio

Verwandte Themen