Huidige situatie
Prijs van een product wordt in database (MySQL) opgeslagen als een INTEGER. Vervolgens ga ik er op de website (PHP) mee rekenen en bij presentatie deel ik het getal door 100. Uiteindelijk staat er dus netjes € 9,95 terwijl ik reken met 995 in hele centen.
Probleem
Anders dan de specificaties deden vermoeden, zijn er nu toch producten met een prijs waar meer dan 2 cijfers achter de komma voorkomen. Bijv. € 0,085.
Mogelijke oplossingen
A. Van INTEGER naar DECIMAL 8,4 en de prijs van de producten nu in de database vermenigvuldigen met 100. We rekenen dan gewoon met floats en bij presentatie hoeven we niet meer te delen door 100.
B. Zoals nu INTEGER laten en de prijs van de producten nu in de database vermenigvuldigen met 100. We rekenen dan met honderdste centen (toch?) en bij presentatie niet meer delen door 100, maar door 10.000.
Eigenlijk neig ik naar oplossing A, omdat B me erg raar in de oren klinkt en iets wat vergezocht lijkt. Toch vraag ik me af op ik bij oplossing A geen last ga krijgen van afrondingsfouten en dergelijke.
Er komen ordervoorbeelden uit dit systeem rollen en het bedrag hoeft niet afgerekend te worden. Het verschil in totaalbedragen met 4, ten opzichte van 2, cijfers achter de komma is bij hoge aantallen natuurlijk wel groot en moet eigenlijk wel gecorrigeerd worden.
Wat is de beste oplossing en zie ik wat over het hoofd?
Prijs van een product wordt in database (MySQL) opgeslagen als een INTEGER. Vervolgens ga ik er op de website (PHP) mee rekenen en bij presentatie deel ik het getal door 100. Uiteindelijk staat er dus netjes € 9,95 terwijl ik reken met 995 in hele centen.
Probleem
Anders dan de specificaties deden vermoeden, zijn er nu toch producten met een prijs waar meer dan 2 cijfers achter de komma voorkomen. Bijv. € 0,085.
Mogelijke oplossingen
A. Van INTEGER naar DECIMAL 8,4 en de prijs van de producten nu in de database vermenigvuldigen met 100. We rekenen dan gewoon met floats en bij presentatie hoeven we niet meer te delen door 100.
B. Zoals nu INTEGER laten en de prijs van de producten nu in de database vermenigvuldigen met 100. We rekenen dan met honderdste centen (toch?) en bij presentatie niet meer delen door 100, maar door 10.000.
Eigenlijk neig ik naar oplossing A, omdat B me erg raar in de oren klinkt en iets wat vergezocht lijkt. Toch vraag ik me af op ik bij oplossing A geen last ga krijgen van afrondingsfouten en dergelijke.
Er komen ordervoorbeelden uit dit systeem rollen en het bedrag hoeft niet afgerekend te worden. Het verschil in totaalbedragen met 4, ten opzichte van 2, cijfers achter de komma is bij hoge aantallen natuurlijk wel groot en moet eigenlijk wel gecorrigeerd worden.
Wat is de beste oplossing en zie ik wat over het hoofd?
[ Voor 3% gewijzigd door TheNephilim op 23-01-2017 11:24 ]