[SQL] Round, percentages, niet kloppend
Goedemoggel,
Ben hier bezig met een leuke query, die na wat moeite eindelijk klopt. Zit enkel met een klein probleempje..
De bedoeling is dat de data die uit de query komt, direct in een div komt, en met percentages wordt dan de hoogte opgegeven. Een soort van staande tabel. Op zich werkt het wel, maar er is een klein probleem.. Als ik in de query zelf al ROUND meegeef, dan komt het nog wel eens voor dat ik 1% mis.. En dat is natuurlijk best slordig om te laten zien (het % wordt ook bovenop die tabel ge-echo'd).
Iemand enig idee hoe ik dit kan fixen?
Groeten,
Chris @ Work
* De berekening e.d. klopt gewoon, als ik geen round gebruik klopt het percentage precies, maar krijg ik 4 cijfers achter de komma :) En dat is natuurlijk ook niet zo mooi om te laten zien..
Ben hier bezig met een leuke query, die na wat moeite eindelijk klopt. Zit enkel met een klein probleempje..
De bedoeling is dat de data die uit de query komt, direct in een div komt, en met percentages wordt dan de hoogte opgegeven. Een soort van staande tabel. Op zich werkt het wel, maar er is een klein probleem.. Als ik in de query zelf al ROUND meegeef, dan komt het nog wel eens voor dat ik 1% mis.. En dat is natuurlijk best slordig om te laten zien (het % wordt ook bovenop die tabel ge-echo'd).
Iemand enig idee hoe ik dit kan fixen?
Groeten,
Chris @ Work
* De berekening e.d. klopt gewoon, als ik geen round gebruik klopt het percentage precies, maar krijg ik 4 cijfers achter de komma :) En dat is natuurlijk ook niet zo mooi om te laten zien..
Edit:
Als er dingen niet duidelijk zijn, please let me know!
Gewijzigd op 01/01/1970 01:00:00 door - -
Gesponsorde koppelingen:
Ik probeer me in te beelden wat je aan 't doen bent, maar dat lukt niet echt.
Als het wel werkt zonder round, dan doe je dat toch op die manier, en ga je op PHP/output level pas round()'en toch?
Als het wel werkt zonder round, dan doe je dat toch op die manier, en ga je op PHP/output level pas round()'en toch?
@iChris
Moet het altijd omhoog, of altijd naar beneden afgerond worden, of afhankelijk van het getal achter de comma?
1.4 -> Wordt 1
1.5 -> wordt 2
Moet het altijd omhoog, of altijd naar beneden afgerond worden, of afhankelijk van het getal achter de comma?
1.4 -> Wordt 1
1.5 -> wordt 2
mysql reference voor ROUND():
The return type is the same type as that of the first argument (assuming that it is integer, double, or decimal). This means that for an integer argument, the result is an integer (no decimal places):
Het afronden doet hij wel goed, maar als hij deze 2 van de 4 resultaten terug krijgt: 17.4 en 11.4, mis ik dus 1 procent (dan wordt het dus 17 & 11 = 19%, anderen zijn wel correct.. totaal wordt dan 99% bijvoorbeeld)
Dan zit ik dus met een layout verschil van 1 procent.. En dat ziet er natuurlijk niet zo heel erg netjes uit..
Zal de query hier tijdelijk plaatsen:
Direct uit Navicat, om de verschillen te zien... Beginner_Round e.d. worden ge-echo'd.
De query blijft hier tijdelijk staan, totdat het probleem is opgelost :)
Thanks voor het kijken!
Dan zit ik dus met een layout verschil van 1 procent.. En dat ziet er natuurlijk niet zo heel erg netjes uit..
Zal de query hier tijdelijk plaatsen:
Direct uit Navicat, om de verschillen te zien... Beginner_Round e.d. worden ge-echo'd.
De query blijft hier tijdelijk staan, totdat het probleem is opgelost :)
Thanks voor het kijken!
Gewijzigd op 01/01/1970 01:00:00 door - -
iChris.nl schreef op 11.09.2008 15:13:
Het afronden doet hij wel goed, maar als hij deze 2 van de 4 resultaten terug krijgt: 17.4 en 11.4, mis ik dus 1 procent (dan wordt het dus 17 & 11 = 19%, anderen zijn wel correct.. totaal wordt dan 99% bijvoorbeeld)
Als je de 'tussenresultaten' echo't, kloppen deze dan wel? Geeft die dan wel 17.4 en 11.4 terug?
Maar als je 17.4 en 11.4 hebt, dan zorgt round ook dat je 17 en 11 terug krijgt, dat is 28. Samen zijn ze wel 29 (afgerond), maar dan moet je dus in je SQL nog kijken of deze samen wel een decimaal hebben die groter of gelijk is aan 0.5 (dat is het geval als het getal / 0.5 een oneven getal is (met evt. nog wat achter de komma))
Het is wel een ingewikkelde kwestie, ik weet hier zo niet een oplossing voor.
edit:
Bijkomend probleem is inhet geval van 17.4 en 11.4 : Welke geef je dan iets meer ruimte?
[/quote]
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Beetje smokkelen misschien?
Je round() alles op één na (liefst de grootste). Die doe je 100 - (de rest bij elkaar).
Je round() alles op één na (liefst de grootste). Die doe je 100 - (de rest bij elkaar).
@SanThe, als ik ze niet ROUND, krijg ik tot 5 cijfers achter de komma ^_^
Hoe zou ik het op een makkelijke manier kunnen smokkelen? De procenten moeten wel zoveel mogelijk blijven kloppen... Het is voor redelijk belangrijke data ^^
Hoe zou ik het op een makkelijke manier kunnen smokkelen? De procenten moeten wel zoveel mogelijk blijven kloppen... Het is voor redelijk belangrijke data ^^
Of alleen tijdens het tonen de afgeronde waarden laten zien?
Als het om html gaat (hoogte-div), an je gewoon dit gebruiken:
Het is geldige html/css en werkt!
Als het om html gaat (hoogte-div), an je gewoon dit gebruiken:
Het is geldige html/css en werkt!
@Eddy: Thanks! Ben nu thuis, maar zal morgen even kijken ;) (Dat ik daar zelf niet op ben gekomen..)



