• 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

Object Storage Arubacloud
0 głosów
365 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 (212,670 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 (212,670 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 (212,670 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ź 393 wizyt
0 głosów
0 odpowiedzi 141 wizyt
pytanie zadane 27 kwietnia 2019 w SQL, bazy danych przez Shimeo7 Obywatel (1,910 p.)
+1 głos
2 odpowiedzi 437 wizyt
pytanie zadane 25 lutego 2021 w JavaScript przez MarcoPolo Nowicjusz (180 p.)

92,568 zapytań

141,421 odpowiedzi

319,629 komentarzy

61,956 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...