Autor Zpráva
IdemeNaHavaj
Profil
Ahoj,
nejako mi blbne počítanie.
V PHP mám:
$cislo = 9.93;
$pripocitane = $cislo*1.2;

echo $pripocitane; // vypíše 10.8
Kalkulačka v počítači mi vyhodí 9.93*1.2 = 11,916
Ako je to možné? Ďakujem za vysvetlenie!
Radek9
Profil
IdemeNaHavaj:
Opravdu? Mně vypisuje správně 11.916. Nevrtal ses v tom? :D
IdemeNaHavaj
Profil
problém vyriešený, to číslo bolo string -_-
janbarasek
Profil
IdemeNaHavaj:
problém vyriešený, to číslo bolo string
Nechápu, PHP umí dynamicky přetypovávat datový typ proměnné, takže by to mělo fungovat i tak. Není problém spíše v tom, že jsi jako řetězec zapsal tu matematickou operaci?
juriad
Profil
echo "9,93" * 1.2; # vypíše 10.8
Samozřejmě je rozdíl mezi desetinnou tečkou a čárkou.
Joker
Profil
IdemeNaHavaj:
Pokud úplně základní běžně používaná operace dává neočekávané výsledky, prakticky vždy jsou příčinou jiné než očekávané vstupy.
Je extrémně nepravděpodobné, že by PHP (respektive C) obsahovalo takovou chybu v operátoru násobení (samozřejmě přesnost uložení reálných čísel může mírně zkreslit výsledek, ale ne o ~10% na jedné početní operaci).

Čili první krok je var_dump toho, co do toho výpočtu leze.

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: