Autor | Zpráva | ||
---|---|---|---|
meca Profil |
#1 · Zasláno: 10. 8. 2007, 22:19:22
Tak přátelé, a tady vidíte, proč nesnášim dělání webů na zakázky. Zadavatel si vymyslel šílený zaokrouhlování - vždy nahoru na padesátníky. Takže 63.3 = 63.50, 63.68 = 64. Vymyslel jsem si na to tedy takovou šílenou fci:
function zaorouhlovani ($cena) { $cislo=round($cena,2); $halire=explode(".", $cislo); $jakocislo="$halire[1]"; if (strlen($jakocislo)==1) { $halire[1]=$halire[1].'0'; } if ($halire[1]<'50' && $halire[1]>'0') { $halir='50'; } else if ($halire[1]>'50' && $halire[1]<='99') { $halir='0'; $pricist='1'; } $cena=$halire[0]+$pricist; if ($halir!='0') $cena.='.'.$halir; return Number_format($cena, 2, ".", " "); } Ale teď problém: v nákupním košíku bych potřeboval sečíst jednotlivý ceny; avšak už musí být zaorkouhlené. Tudíž bych potřeboval sečíst třeba 65 500.50 + 61 508.50 - avšak s tím si PHP neporadí a sečte 65+61 - odstranit pro ten účel tu mezeru není problém, horší už je to s tou desetinou čárko... Tudíž se ptám, zda nemáte nějaký nápad. Nebo jak se v PHP oděluje ona celá cifra od těch desetiných šťufliků? Děkuji mockrát. |
||
djlj Profil |
#2 · Zasláno: 10. 8. 2007, 22:30:19 · Upravil/a: djlj
Teď jsem chvíli hledal v manuálu; nepomohly by BCMath funkce pro výpočty s libovolnou přesností? Samozřejmě za předpokladu, že máš možnost si ty funkce povolit…
Nebo nestačilo by před výpočtem udělat (float)$promenna? |
||
meca Profil |
#3 · Zasláno: 10. 8. 2007, 23:10:36
Ha, už sem na to přišel... Udělal jsem si další funkci úplně stejnou jako to zaorouhlovani, akorátže sem z toho vyflus ten float bez mezer. Pak sem to posčítal a nakonec vypsal sformátované pouze skze Number_format.
Ehm, sám to moc nechápu ;)) Díky, djlj ;) |
||
DoubleThink Profil * |
#4 · Zasláno: 11. 8. 2007, 01:25:50
Základ je držet v proměnných vždy nezformátované číslo - tedy float. To pak až při vypisování formátovat.
|
||
Časová prodleva: 17 let
|
0