• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błędne sumowanie wartości z bazy danych

VPS Starter Arubacloud
0 głosów
414 wizyt
pytanie zadane 19 września 2017 w SQL, bazy danych przez Q_Nick Mądrala (5,010 p.)
Posiadam bazę danych z której chciałbym zsumować wartość kolumny cost( wartość typu float dodatnia i ujemna), i przy użyciu zapytania "SELECT SUM(cost) FROM bookkeeping" wartość jaką otrzymuje posiada ileśnaście zer po przecinku, gdy wartości mają maksymalnie po dwie. Z czego to może wynikać?

2 odpowiedzi

+1 głos
odpowiedź 19 września 2017 przez Ehlert Ekspert (214,100 p.)
wybrane 19 września 2017 przez Q_Nick
 
Najlepsza

Różnica wynika zapewne stąd, że wyszła Ci liczba wymierna, niemożliwa do zapisanie w systemie z którego korzysta mysql.

Na przyszłość. Pola na pieniądze w bazach danych powinny zawsze być typu decimal. Np. decimal(8,2). Jeśli programujesz w języku z silnym typowanie używaj double​​​​​​. Taka strategia oszczędzić Ci sporo kłopotów.  ​​​​

komentarz 19 września 2017 przez Q_Nick Mądrala (5,010 p.)
Czyli jeśli używam php to powinienem użyć double czy decimal? Dzięki za porządną odpowiedź :D
1
komentarz 19 września 2017 przez Ehlert Ekspert (214,100 p.)
Php nie ma silnego typowania. Używaj money_format i funkcji do precyzji liczb zmoennoprzecinkowych.

Zrób testy funkcjonalne, porównaj wyniki z Excelem.
–1 głos
odpowiedź 19 września 2017 przez Frendom Pasjonat (18,900 p.)
Zależy to pewnie od typu danych który użyjesz. Jeżeli chcesz zminimalizować ilość zer to możesz użyć dodatkowo funkcji round.
komentarz 19 września 2017 przez Q_Nick Mądrala (5,010 p.)
Ale mnie dziwi skąd się biorą te dziwne cyfry po 0, skoro np mam dwa rekordy i obliczenia są 100000-563.98=99436.02001953125 i nie wiem skąd to dodatkowe 0,00001953125
komentarz 19 września 2017 przez Ehlert Ekspert (214,100 p.)
Skoro wychodzą mu niewłaściwe wyniki to funkcja round w takim wypadku w systemie bankowym mogłaby rocznie ukraść kilka milionów złotych. Tak też stało się we Francji tyle, że na giełdzie.
1
komentarz 20 września 2017 przez ukasz112 Początkujący (390 p.)
https://www.dobreprogramy.pl/slepciu/Dlaczego-w-MySQLu-nie-stosowac-typu-FLOAT,30401.html  <-- tutaj znajdziesz pełna odpowiedz na swoje pytanie :)

Podobne pytania

0 głosów
1 odpowiedź 434 wizyt
0 głosów
0 odpowiedzi 152 wizyt
pytanie zadane 27 kwietnia 2019 w SQL, bazy danych przez Shimeo7 Obywatel (1,910 p.)
+1 głos
2 odpowiedzi 549 wizyt
pytanie zadane 25 lutego 2021 w JavaScript przez MarcoPolo Nowicjusz (180 p.)

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...