phpbar.de logo

Mailinglisten-Archive

[php] Simple Multiplikation schlägt fehl

[php] Simple Multiplikation schlägt fehl

Hendrik Frank rik at shorebreak.de
Fre Dez 22 00:06:59 CET 2006


Am 21.12.2006 um 22:06 schrieb Sascha Grossenbacher:

> Hendrik Frank wrote:
>> Auch, wenn ich jetzt bestimmt nerve (sorry), aber der Doku Auszug
>> sagt doch '.' und soweit ich weiß ist es im Computer üblich ein
>> deutsches Dezimalstellenkomma durch einen Punkt zu ersetzen. Und in
>> meiner Variable aus der XML Datei steht ein Punkt.
>>
>> Bin jetzt irgendwie verwirrt.
>>
>> Hendrik
>>
> Nur eine Vermutung:
> PHP bestimmt das Trennzeichen anhand nach der eingestellten Sprache
> (locale). Ich bin Schweizer..
>
> var_dump(rechner('5.99', '1.55', 1, 1)) -> float(9.2845)
> var_dump(rechner(5.99, 1.55, 1, 1)) -> float(9.2845)
>
> Jedoch:
> var_dump(rechner('5,99', '1,55', 1, 1)) -> float(5)
>
> Gruss Sascha

Ich hab "5.99" als String im XML
wenn ich das multiplizieren will, wird es zu (int) 5.
also sage ich floatval("5.99"), dann wird korrekt multipliziert.
Das Ergebnis ist ein float(194.9745).

Das schreibe ich nun wieder ins XML. Hier wird aber jetzt automatisch  
194,9745 geschrieben statt 194.9745!
Im XML ist es also wieder ein string (klar), aber das Dezimalzeichen  
wurde geändert, was zu folge hat, dass ich beim nächsten mal rechnen  
mit diesem wert (aus dem xml) probleme bekomme:

ein einfaches floatval("194,9745") gibt nämlich nicht float(194.9745)  
sondern float(194), was die nächste rechnung versaut. ich muss also  
ein str_replace(",", ".", "194,9745") machen um einen float zu bekommen.
Quellcode steht unten nochmal komplett.

Kopfzerbrechen gratis...
Falls jemand meinen php-code will, den würde ich auch gratis  
verschicken (ist aber unordentlich mit 100 var_dumps ;-) )
Hendrik



php::bar PHP Wiki   -   Listenarchive