Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bardzo dziwna suma
busterek
post 28.06.2018, 21:45:25
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witajcie,
Mam w bazie danych serię danych. Są to liczby zapisane w polu typu varchar z przecinkiem jako znak dziesiętny. Do wyświetlania tych danych nie stanowiło to problemu. Niestety teraz trzeba to sumować. Niby zadanie proste. Wybrałem sposób z funkcją str_replace, a następnie wynik funkcji dodaję i już. I wszystko byłoby pięknie, gdyby nie suma, która się wyświetla. Otóż pojawią się tam po kilku miejscach po przecinku 1. w danych tego nie ma. Zacząłem sprawdzać po stronie bazy danych. Wynik zapytania select sum(replace(pole, ',', '.') from tabela; daje ten sam efekt. Co jest grane?questionmark.gif
Go to the top of the page
+Quote Post
trueblue
post 28.06.2018, 21:54:15
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Naprawdę uważasz, że VARCHAR to dobry typ dla liczb zmiennoprzecinkowych?

https://www.google.com/search?q=liczby+zmie...zecinkowe+błędy

Jeśli chcesz mieć superdokładność, to https://dev.mysql.com/doc/refman/8.0/en/fix...oint-types.html, jeśli nie, i akceptujesz takie błędy, to nadal lepszym typem będzie FLOAT lub DOUBLE.


--------------------
Go to the top of the page
+Quote Post
busterek
post 28.06.2018, 22:00:12
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Pracuję na takich danych, jakie dostałem. Poprawiam trochę interfejs aplikacji napisanej przez kogoś ponad 10 lat temu. Chyba był średnio ogarnięty. No ale cóż. Czyli co? zamienić w danych funkcją REPLACE przecinek na kropkę i zmienić typ pola na float? Będzie bezpieczniej?
Go to the top of the page
+Quote Post
Pilsener
post 1.07.2018, 09:50:15
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
Poprawiam trochę interfejs aplikacji napisanej przez kogoś ponad 10 lat temu
- no to robisz standardowy feedback, że ponieważ ktoś kiedyś zaoszczędził trochę kasy to teraz zrobienie sumy jest praktycznie niemożliwe - praktycznie, bo w teorii można posiedzieć nad tym dwa tygodnie, zrobić refaktoryzację i uprzedzić klienta, że czasem 2+2 będzie 5. Im mniej się dłubie w takich apkach tym lepiej, bo potem klient niezadowolony, że tydzień poprawiałeś jakąś literówkę powodując przy tym kilka innych smile.gif
Miałem niedawno taką aplikację, cena towarów w bazie wyglądała mniej więcej tak:

0,001
20,23
23.45
23 34
gratis
23,000.34
24.000,00
Ziutek, tu nie ma ceny!!
34 000,-
1500 minus 10%

I teraz rób z tego matematykę, powodzenia smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 12:16