Re: [lms] Re: Ciekawy błąd w LMS
u mnie błąd nie występuje, natomiast zauważyłem, że u mnie na KP liczby
mają przecinek, a nie tak jak u ciebie kropkę dziesiętną, może problemem jest brak odpowiedniego locale w twoim systemie? No i nie podałeś wersji Smarty/PHP/LMSa/bazy.
Moim zdaniem błąd jest pośrednio związany z funkcją obliczająca liczbę "groszy" w pliku receipt.php:
receipt['totalg'] = $receipt['total']*100 - ((int) $receipt['total']) * 100;
a dokładniej: $receipt['total']*100 nie zawsze będzie liczbą stałoprzecinkową, nawet jeśli pomnożycie przez 100, bo $receipt['total'] jest tutaj liczba zmiennoprzecinkowa. Liczba zmiennoprzecinkowa to tylko pewne przybliżenie (rozwinięcie) właściwej liczby
Akurat w tym przykładzie najbliższe przybliżenie liczby 134.20 było równe: 134.199999999999998
Dlatego powinno być dodane dodatkowe zaokrąglenie/rzutowanie. Jak tak zrobiłem, to problem zniknął.
Niektórzy w ogóle nie zalecają stosować liczb zmiennoprzecinkowych do obliczeń finansowych (z uwagi na niedokładność przy m.in. liczeniu salda, mogą być różnice na poziomie np. groszy).
Pozdrawiam
uczestnicy (1)
-
1stpage