number_format
Andy
- php
0 Andreas Korthaus0 chr_schr0 Danke!
Morgen,
also ich bekomme aus einer Textdatei den preis 95,60!
Dann ersetz ich jetzt das Komma durch einen Punkt damit ich dann 0.50 Cent dazuzählen kann.
$aktuellerpreis = 95,60(Diesen Wert bekomme ich ja aus der Txt-Datei.)
CODE:
$aktuellerpreis2 = number_format($aktuellerpreis, 2, '.', ' ');
CODE ENDE:
aber nach dieser zeile ist aktuellerpreis2=95.00 und wenn ich da dann 0.50 dazuzähl kommt 95.50 raus. Eigentlich sollte aber 96.10 rauskommen.
Was stimmt mit dieser Zeile nicht?
Danke,
Gruss Andy
HallO!
Dann ersetz ich jetzt das Komma durch einen Punkt damit ich dann 0.50 Cent dazuzählen kann.
$aktuellerpreis = 95,60(Diesen Wert bekomme ich ja aus der Txt-Datei.)CODE:
$aktuellerpreis2 = number_format($aktuellerpreis, 2, '.', ' ');
CODE ENDE:
Nein, damit ersetzt Du nichts. number_format() erwartet Float als Datentyp:
[link.http://de3.php.net/manual/de/function.number-format.php]
string number_format ( float number, int decimals, string dec_point, string thousands_sep)
Und wandelt das Ergebnis entsprechend Deinen Vorgaben in einen String um.
95,60 ist keine Zahl, sondern ein String, also wandelt PHP den String in eine Zahl um: http://de3.php.net/manual/de/language.types.string.php#language.types.string.conversion
Da PHP mit dem Komma nix anfangen kann, wird alles ab diesem Zeichen abgeschnitten. Dann bekommst Du einen String mit 95.00 zurück, wie Du es PHP sagst ;-)
aber nach dieser zeile ist aktuellerpreis2=95.00 und wenn ich da dann 0.50 dazuzähl kommt 95.50 raus. Eigentlich sollte aber 96.10 rauskommen.
PHP kennt als Zahlen normalerweise nur das amerikanische Format mit . als Dezimal-Trennzeichen. Das heißt, Du musst zunächst dieses erzeugen, indem Du das Komma manuell durch einen Punkt ersetzt, z.B. mit str_replace(). Dann kannst Du mit dieser Zahl rechnen, und _danach_ ggfs. für die Ausgabe formatieren(number_format()), z.B. mit einem Komma als Dezimal-Trennzeichen.
Die Alternative wäre die Verwendung von setlocale() http://de3.php.net/manual/de/function.setlocale.php, hiermit kannst Du PHP sagen, es soll mit deutschen Zahlenformaten rechnen, also in dem Fall ist dann 95,60 eine gültige Zahl, und Du kannst normal mit Komma rechnen. Bedenke nur dass sich das auf das gesamte Script auswirkt, daher habe ich immer etwas Angst vor solchen Dingen ;-)
Grüße
Andreas
Hallo,
CODE:
$aktuellerpreis2 = number_format($aktuellerpreis, 2, '.', ' ');
CODE ENDE:
Die Zeichenkette 95,60 ist wenn diese in Integer umgewandelt worden ist, nur noch "95", da das "," kein Dezimalzeichen ist, d.h. du must das Komma vorher ersetzen.
Die Funktion "number_format" formatiert nur eine Zahl.
Andere deine Code mal so ab:
$aktuellerpreis=str_replace(",",".",$aktuellerpreis);
$aktuellerpreis2 = number_format($aktuellerpreis, 2, '.', ' ');
Jetzt sollte es gehen.
MfG
Christian
Danke für eure antworten.
Ihr habt mir echt weitergeholfen.
@chr_schr:
es hat so funktioniert. danke schön!
Gruss, Andy