Toon posts:

[PHP/MYSQL] Prijs in tabel zetten

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Hoe kan ik het beste een bedrag in een tabel zetten, het gaat om bedragen met 2 getallen achter de komma.

Als ik het bedrag uit de tabel haal moet er weer een komma in komen.


Alvast bedankt...

  • CubicQ
  • Registratie: September 1999
  • Nu online
als float?

En ja, dan heb je wel iets overhead, en bedragen boven de 345645 miljoen triljard gaan niet meer :) Maar ik denk dat dat kleine probleem minder probleem is dan een (long) integer gebruiken en dan functies moeten maken om met 100 vermenigvuldigen/delen op de juiste punten. Je middelste tier wordt imho dan onnodig moeilijk met risico's dat je het ergens vergeet en je prijzen opeens een factor 100 te hoog/laag worden.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 16:30

Janoz

Moderator Devschuur®

!litemod

Als je hier eens kijkt (moet je vaker doen, staat veel in hoor!) kun je precies zien welk type je nodig hebt!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • CubicQ
  • Registratie: September 1999
  • Nu online
DECIMAL and NUMERIC values are stored as strings, rather than as binary floating-point numbers, in order to preserve the decimal precision of those values. One character is used for each digit of the value, the decimal point (if scale > 0), and the `-' sign (for negative numbers).
Levert dit niet gigantische performance penalties op als je er bewerkingen mee gaat uitvoeren? Als het om "select salary from workers" gaat ofzo zal het daarentegen wel weer sneller zijn, nu hoeft alleen een string-copy uitgevoerd te worden in plaats van een float->string omzetting.

Maar ja, als MySQL AB dat zo geimplementeerd heeft zullen ze daar wel een reden voor hebben gehad.

Verwijderd

ik zie eerlijk gezegd niet wat je bedoelt :)
een float is toch niet moelijker of makkelijker mee te werken dan een double bijvoorbeeld?

misschien kijk ik wel de verkeerde richting op, schop me dan maar terug :)

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07:51

HenkS

Da_king alias HenkS

ik neem voor zoiets altijd float, waar is dat veld anders voor :)

  • CubicQ
  • Registratie: September 1999
  • Nu online
Op dinsdag 27 november 2001 08:26 schreef jurriebur het volgende:
ik zie eerlijk gezegd niet wat je bedoelt :)
een float is toch niet moelijker of makkelijker mee te werken dan een double bijvoorbeeld?
't gaat niet om float <-> double (da's inderdaad vrijwel hetzelfde, intern in de CPU wordt dat waarschijnlijk hetzelfde behandeld), maar om float <-> string.

Stel je hebt tabel
id int
a decimal(10,2)
b float

Als je "select a from tabel" doet, is dat sneller dan "select b from tabel" (de gegevens enzo in die kolommen zijn even hetzelfde :)): bij b moet die float eerst omgezet worden en geformateerd worden terwijl bij a die string compleet direct gecopieerd kan worden.

Als je echter "select 0.454 * a from tabel" en "select 0.454 * b from tabel" met elkaar vergelijkt zal b sneller zijn, omdat bij a die string eerst omgezet moet worden naar een float (of double oid) en dan kan pas die berekening plaatsvinden, terwijl die berekening bij b meteen kan plaatsvinden.

Maar ik vraag me dus een beetje af of dit iets is om in de praktijk rekening mee te houden, of dat dit eigenlijk puur theoretisch gezwets is..
Pagina: 1