Autor Zpráva
dsa
Profil *
Prečo mi nasledujúci kód vypíše číslo 70.73 a nie 70.74?

echo (floor(70.74*100))/100;
phpExternista
Profil
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
Viz také Výsledkem výpočtu 1 - 0.9 není přesně 0.1 v FAQ pro Javascript.
dsa
Profil *
A ako by sa to dalo vyriešiť napr. cez BCMath?
Alphard
Profil
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 *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: