Problemy s cislami rubrika: Programování: PHP

1 Roman Kubiš
položil/-a 11.10.2014

Ahojte.
V poslednej dobe castejsie robim s desatinnymi cislami a narazam na problemy pri praci s nimi. Neviem ako presne pracovat s takymito cislami aby mi vzdy vysiel konstatny vysledok.
Premenna $a aj $b je nacitana z databazy takze je standardne typu string. Aj ked ju pretypujem na float aj tak je vysledok nespravny ale ak pouzijem druhy sposob vypoctu tak je to ok.

$a = "2.80";
$b = "2.80";
echo (int)(("145.60" - $a - $b)*100); // vrati 13999
echo "<br>";
echo (int)("145.60"*100 - $a*100 - $b*100); // vrati 14000

Vopred dakujem za kazdu radu.

odkaz
7 Jakub Macek
odpověděl/-a 12.10.2014

Ještě nevidím zmíněno jedno tradiční řešení - fixed decimal point (v kontrastu proti floating decimal point). Tedy zvolím si, že všechny výpočty probíhají s přesností třeba na 2 desetinná místa a tedy místo "2.80" se používá "280". Cílem je použít celočíselnou aritmetiku, která zmíněným neduhem netrpí. Samozřejmě je to komplikovanější na myšlení, třeba při násobení se musí nadbytečné číslice uříznout. Ve výsledku je asi ten bcmath praktičtější, ale tohle řešení pracuje s čísly (ne textem), takže je výhodnější pro některé situace.

Komentáře

  • Taco : Imho se dotyčný právě o toto pokouší. 12.10.2014

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.