2016-07-28 18 views
0

Gibt es eine effizientere Art und Weise zu entfernen:effizienteste Weg, Währungssymbol und auf 2 Dezimalstellen

  • Entfernen Sie die £ Symbol
  • Set Zahl auf 2 Dezimalstellen
number_format((float)str_replace('£','',$number), 2, '.', '') 
+0

können Sie runden (floatval ($ input)); –

+0

Einen Geldwert in 'float' zu bringen kann ziemlich mühsam sein, wenn Genauigkeit in irgendeiner Weise wichtig ist. – deceze

+0

ja ... um alle möglichen Probleme abzudecken, können Sie eine Funktion machen, die deckt,. und alle unerwarteten Probleme –

Antwort

0

Uh, wie mit substr (entfernen Sie das erste Zeichen) anstelle von str_replace (sucht die gesamte Zeichenfolge)

number_format((float)substr($number, 1), 2, '.', '') 

Oder sprintf

sprintf('%0.2f', $number) 

verwendet, die schneller ist (wenn es darauf ankommt) auf Ihrem Benchmark ab.

** Wenn Sie mit einem Wert arbeiten, der normalerweise größer ist als ein normaler Dezimalwert oder ein Gleitkommawert, können Sie mit keiner dieser Methoden wirklich präzise arbeiten. Sie müssen etwas Komplexeres verwenden, um die Rundung selbst durchzuführen. d. h. dividiere von der letzten Zahl bis zum ersten mit Überträgen.

Verwandte Themen