• 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

0 głosów
573 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 (215,070 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 (215,070 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 (215,070 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ź 589 wizyt
0 głosów
0 odpowiedzi 234 wizyt
pytanie zadane 27 kwietnia 2019 w SQL, bazy danych przez Shimeo7 Obywatel (1,910 p.)
+1 głos
2 odpowiedzi 890 wizyt
pytanie zadane 25 lutego 2021 w JavaScript przez MarcoPolo Nowicjusz (180 p.)

93,632 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...