Grzegorz Lech GoldenLine.pl
Temat: PHP Bugs
Znalazłem ciekawy case w php.Załóżmy, że mamy sklep internetowy i wszystkie ceny chcemy trzymać jako liczby całkowite bez przecinków.
Możemy to w prosty sposób osiągnąć mnożąc kwotę razy 100, po czym zrzutować na int'a, aby mieć pewność że będzie to liczba całkowita.
Przykładowy kod może wyglądać tak: $kwota = (int) ($kwota * 100);
Sposobów na to jest wiele, ale nie w tym rzecz. Wynik zawsze będzie ten sam.
Problem pojawia się wtedy, gdy dostajemy kwotę '19.90'.
Po zrzutowaniu jej na int'a otrzymujemy kwotę 1989.
Czy ktoś jest mi w stanie to w logiczny sposób wytłumaczyć dlaczego tak się dzieje?
Pytanie, ile ile jeszcze takich liczb jest...
Można ten bug ominąć na kilka sposobów, pytanie tylko dlaczego tak się dzieje i dlaczego dla tej kwoty...