phpbar.de logo

Mailinglisten-Archive

[php] Double mit Strich und Komma..

[php] Double mit Strich und Komma..

Thomas Bartz thomas_(at)_cyainhell.de
Thu, 11 Jan 2001 21:52:07 +0100


Hi,


> So ganz genau hab ich das noch nicht verstanden. Erstens, nimm mal ne
> neuere PHP Version. Zweitens kann man number_format()
> [http://php.net/number_format] das ganze sehr elegant ausgeben.
> Drittens, bei DM Beträgen sollte man wegen der Genauigkeit mit Pfennig
> Beträgen rechnen.

das problem tritt auf, wenn man einen benutzer einen geldbetrag eingeben
lässt. alles was ins formularfeld eingetragen wird kommt ja als String im
nächsten Skript an, also muss ich den String erst in einen adäquaten
datentyp, in dem fall Double, umwandeln um auch nur irgendwas damit machen
zu können.
also, benutzer gibt möglicherweise folgendes ein:
"2.50 DM" ... er nimmt einen punkt, weil er meint, im Computer macht man das
bei Kommazahlen (das formularfeld nennen wir mal "cash") -  benutzer machen
ja alles mögliche, was sie nicht tun sollen, also will ich das irgendwie
abfangen. ich sage nun also dem bearbeitenden Skript, es solle mir aus
diesem Skript einen Double machen, damit ich damit rechnen kann.
-cut--------------------------------
<?php
settype($cash, "double");
echo $cash;
?>
-cut--------------------------------
jedes normale system würde, denn so ist die funktion settype definiert,
"2.5" ausgeben. bei dem system in meiner firma ist das aber nicht der fall,
ich bekomme nur "2" raus.
gibt der User hingegen "2,50" an, funktioniert auch das kleine skript und
die ausgabe lautet "2,5".

um das problem nochmal zu verdeutlichen, hier noch ein beispiel:
-cut--------------------------------
<?php
$foo = 5/2;
echo $foo;
?>
-cut--------------------------------
erwartete ausgabe: "2.5"
was ich bekommen habe: "2,5"

es geht wirklich nur um den unterschied des trennzeichens, also eben Punkt
und Komma, und dass PHP das scheinbar so unterschiedlich behandelt.

entweder ist das ein bug der PHP Version 4.0.0 oder eine
Lokalisierungseinstellung, die ich bisher noch nirgends finden konnte. wie
gesagt, auf ein derartiges problem habe noch nirgends auch nur einen hinweis
gefunden.
nochmal die systemkonfiguration: Redhat 6.1, PHP 4.0.0 und Apache (version
hab ich gerade nicht zur hand).
ich habe leider keinen einfluss auf die PHP version, sonst wäre ein update
das erste gewesen, was ich gemacht hätte. die funktion number_format() kann
hier, denke ich, auch nichts ändern, vor allem das zweite skript ist recht
eindeutig.

gruss
Thomas



php::bar PHP Wiki   -   Listenarchive