[mysql] sum() op float veld geeft rare waarde

Pagina: 1
Acties:

  • ebas
  • Registratie: Maart 2001
  • Laatst online: 20-04-2017
Misschien is dit iets wat algemeen bekend is, en waar weinig aan te doen is, of een eenvoudige oplossing voor is; maar ik weet het echt niet:

Ik heb een tabelletje met een float veld, gevuld met positieve en negatieve waarden. Dit zijn allemaal bedragen met niet meer dan 2 getallen achter de komma. Als ik hier een SELECT sum(`veld`) FROM `table` op loslaat, dan komt er tóch een getal uit met veel getallen achter de komma.

Dit is toch niet de bedoeling? Een float moet dat toch ook gewoon kunnen zonder op een afwijkend getal uit te komen? Het zijn getallen van max 5 cijfers, niets boven de 1000 euro..

Ik heb er nu een decimal (5,2) van gemaakt, maar dat vind ik niet zon prettig type eigelijk..

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Een float is nooit geheel precies.

Als je echt precieze waardes wilt, gebruik dan een Decimal of een numeric oid.
Accurate representation of monetary values is a common problem. In MySQL, you should use the DECIMAL type. This is stored as a string, so no loss of accuracy should occur. If accuracy is not too important, the DOUBLE type may also be good enough.

[ Voor 61% gewijzigd door whoami op 17-01-2004 15:44 ]

https://fgheysels.github.io/


  • ebas
  • Registratie: Maart 2001
  • Laatst online: 20-04-2017
Maar op een getal van een paar digits moet hij toch wel precies zijn? Het is toch ook zo dat als ik een gewone select doe, hij niet op getallen uitkomt die meer achter de komma hebben?

Als ik er 55,10 instop, blijft er gewoon 55,10 uitkomen, lijkt me logisch, als een float veld niet zo precies kan zijn heb je er geen ruk aan.

Als ik dus handmatig alle waarden op ga tellen, kom ik op het goede getal uit.

Nu kan het natuurlijk zijn dat als ik de uitkomst van die sum afrond, ik altijd op het goede getal uit ga komen, maar kan ik hier vanuit gaan?