Beste forumleden,

Ik heb een prijs in centen... 79800. Dit moet worden weergeven als 79,80 euro.

Ik probeer dit:
<?php $betaald = $gegevens['prijs'] / 100;
                    $betaald =  "&euro;".number_format( $betaald, 2,',','.'); ?>


Maar krijg dan 798,00 euro.

Hoe los ik dit op?
>> Ik heb een prijs in centen... 79800. Dit moet worden weergeven als 79,80 euro.
>> Maar krijg dan 798,00 euro.
>> Hoe los ik dit op?

Door je te beseffen dat 79800 centen 798 euro's zijn en niet 79,80 euro.
Ozzie PHP op 29/07/2015 15:14:48

>> Ik heb een prijs in centen... 79800. Dit moet worden weergeven als 79,80 euro.
>> Maar krijg dan 798,00 euro.
>> Hoe los ik dit op?

Door je te beseffen dat 79800 centen 798 euro's zijn en niet 79,80 euro.



I see, hoe tackel ik dan deze situatie:

iDEAL api van targetpay wilt zijn prijs in centen doorkrijgen, ik sla dit op als centen in de database. Maar de te betalen prijs is geen 798 euro maar 79,80 euro.

Dus is er een formule om de centen toch als 79,80 eruit te laten komen?
Die formule heb je toch al? Jij verwachtte alleen een ander resultaat, maar het resultaat klopte wel. Of zie ik het verkeerd nu?
Ozzie PHP op 29/07/2015 15:23:55

Die formule heb je toch al? Jij verwachtte alleen een ander resultaat, maar het resultaat klopte wel. Of zie ik het verkeerd nu?


Makkelijkste is dus de prijs niet als centen in de database te zetten...
HUH???

Ik snap je niet. Jouw formule werkt toch gewoon. Hij doet wat ie moet doen.

Jij verwachtte een bedrag van 79,80 maar 79800 centen is een bedrag van 798,00. Dus de formule klopt gewoon. Jij had je alleen vergist in de uitkomst.

Snap je het nu?
Oké.
Furio Scripting op 29/07/2015 15:33:13

Makkelijkste is dus de prijs niet als centen in de database te zetten...

Dat is inderdaad het makkelijkste, je hebt nu je business logic aangepast aan ideal, echter het grootste gedeelte van je applicatie zal de prijs in euro's willen gebruiken.
Want bedragen als floats opslaan werkt zoveel fijner...

Kijk anders eens naar het DECIMAL type, en sla het anders gewoon op in centen m.b.v. unsigned INTegers (dit laatste zou denk ik mijn voorkeur hebben).

Het is altijd zaak dat je overal dezelfde formatterings- en rekenregels toepast, maakt niet uit in welke vorm je het uiteindelijk opslaat.

En zoals Ozzie (herhaaldelijk) aangeeft is het natuurlijk ook handig als je weet hoe het omrekenen werkt :p.
Want bedragen als floats opslaan werkt zoveel fijner...
WTF heeft het over floats?(not me)
Thomas van den Heuvel op 30/07/2015 19:42:18

Kijk anders eens naar het DECIMAL type, en sla het anders gewoon op in centen m.b.v. unsigned INTegers (dit laatste zou denk ik mijn voorkeur hebben).

Het is altijd zaak dat je overal dezelfde formatterings- en rekenregels toepast, maakt niet uit in welke vorm je het uiteindelijk opslaat.

Is dat zo?
Dus al jou kolommen in jou tabellen zouden dan een varchar datatype hebben?

Reageren