Mailinglisten-Archive |
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