Autor | Zpráva | ||
---|---|---|---|
dsa Profil * |
#1 · Zasláno: 22. 11. 2012, 10:32:21
Prečo mi nasledujúci kód vypíše číslo 70.73 a nie 70.74?
echo (floor(70.74*100))/100; |
||
phpExternista Profil |
#2 · Zasláno: 22. 11. 2012, 12:23:45
dsa:
protože je to datový typ float a jeho reprezentace není přesná. V momentě kdy zaokrouhlíte dolů se tato odlišnost projeví. Pokud pracujete s částkami v korunách, nejsnazší pro vás bude pracovat s haléři. Jinak GMP nebo BCMath. |
||
Joker Profil |
#3 · Zasláno: 22. 11. 2012, 13:50:36
Viz také Výsledkem výpočtu 1 - 0.9 není přesně 0.1 v FAQ pro Javascript.
|
||
Časová prodleva: 3 dny
|
|||
dsa Profil * |
#4 · Zasláno: 25. 11. 2012, 20:13:12
A ako by sa to dalo vyriešiť napr. cez BCMath?
|
||
Alphard Profil |
#5 · Zasláno: 26. 11. 2012, 00:18:15
A co je cílem? BCMath pracuje s čísly jako s řetězci a matematické operace tedy provádí s libovolnou přesností. Konkrétní zápis viz manuál, není to nic jiného než používání funkcí místo operátorů. Ale nemá funkci floor().
Normální postup by byl zaokrouhlovat výsledek, ne mezivýpočet. |
||
dsa Profil * |
#6 · Zasláno: 26. 11. 2012, 11:24:54
Už som to asi pochopil. Chcel som, aby to matematicky správne zaokrúhľovalo na 2 desatinné miesta dole a zdá sa, že vďaka BCMath funkciám to funguje. Ďakujem.
|
||
Časová prodleva: 11 let
|
0