Autor | Zpráva | ||
---|---|---|---|
mardon Profil |
#1 · Zasláno: 8. 11. 2009, 13:12:33
Snažím se do PHP načist XML výstup, kde obsahem XML je informace nazev, cena apod
XML mám načtené v proměnné $item typu object , jednotlivé položky jsou pak v atributech $item['cena'] Teď ,a le potrebuji cenu uložit do db takže mám toto: $cena = $item['cena']; $cena =$cena*1.25; cena se mi ale nevypočítá správně, je potřeba nějak přetypovat $item['cena']? |
||
Majkl578 Profil |
#2 · Zasláno: 8. 11. 2009, 13:15:24
Co znamená "cena se mi ale nevypočítá správně"? Přetypování se provádí automaticky. Navíc počítání s typem float přináší jistou míru nepřesnosti...
|
||
mardon Profil |
#3 · Zasláno: 8. 11. 2009, 13:33:51
no mam tam mapř. 49.9000*1.25 mi dá výsledek 61.25 místo očekávaných 62.375
|
||
mardon Profil |
#4 · Zasláno: 9. 11. 2009, 22:09:27
takže celý problém je zřejmě způsoben tím, že řetězec
$item['cena'] |
||
AM_ Profil |
#5 · Zasláno: 9. 11. 2009, 22:49:56
pokud je oddělovač desetinných míst opravdu tečka a ne čárka, mělo by to brát správně. Je ale možné, že tvá instalace PHP respektuje české prostředí a naopak tam chce čárku, tak si s tím zkus pohrát. Jinak ale jsem se nikdy nesetkal s problémem při převodu desetinných čísel ze stringu.
Zkusil jsem si to, a: echo (float)"4.7"; echo "4.7"*1; obojí mi vypsalo 4.7, takže problém s konverzí opravdu není. |
||
Majkl578 Profil |
#6 · Zasláno: 9. 11. 2009, 23:19:02
AM:
To je dost možné, jelikož: var_dump('49,9000'*1.25); vrací 61.25. ;) |
||
mardon Profil |
#7 · Zasláno: 10. 11. 2009, 08:10:13
to nějak nechápu mám v tom řetězci tečku, ale on tam vidí čárku a proč ji teda nevidí v čísle 1.25?
Ještě mailnkatý dotaz , jak zjistím to nastavení českého prostředí v PHP? |
||
nightfish Profil |
#8 · Zasláno: 10. 11. 2009, 08:37:31
mardon:
„to nějak nechápu mám v tom řetězci tečku, ale on tam vidí čárku a proč ji teda nevidí v čísle 1.25?“ pokud tam máš tečku, tak nemá důvod vidět tam čárku zkus $cena = str_replace(',', '.', $item['cena']); $cena = $cena * 1.25; |
||
Časová prodleva: 14 let
|
0