Decimalen probleem bij prijs

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

29/07/2015 15:09:10
Quote Anchor link
Beste forumleden,

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

Ik probeer dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php $betaald = $gegevens['prijs'] / 100;
                    $betaald =  "&euro;".number_format( $betaald, 2,',','.'); ?>


Maar krijg dan 798,00 euro.

Hoe los ik dit op?
Gewijzigd op 29/07/2015 15:09:40 door Furio Scripting
 
PHP hulp

PHP hulp

23/12/2024 20:22:51
 
Ozzie PHP

Ozzie PHP

29/07/2015 15:14:48
Quote Anchor link
>> 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.
 
Furio Scripting

Furio Scripting

29/07/2015 15:20:19
Quote Anchor link
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?
 
Ozzie PHP

Ozzie PHP

29/07/2015 15:23:55
Quote Anchor link
Die formule heb je toch al? Jij verwachtte alleen een ander resultaat, maar het resultaat klopte wel. Of zie ik het verkeerd nu?
 
Furio Scripting

Furio Scripting

29/07/2015 15:33:13
Quote Anchor link
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...
 
Ozzie PHP

Ozzie PHP

29/07/2015 15:38:32
Quote Anchor link
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?
 
Furio Scripting

Furio Scripting

29/07/2015 15:42:28
Quote Anchor link
Ja duidelijk.
 
Ozzie PHP

Ozzie PHP

29/07/2015 15:46:42
Quote Anchor link
Oké.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/07/2015 18:27:42
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

30/07/2015 19:42:18
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/07/2015 20:30:14
Quote Anchor link
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?
 
Thomas van den Heuvel

Thomas van den Heuvel

30/07/2015 20:44:03
Quote Anchor link
WTF heeft het over varchar? (not me)

Je stemt in met de topicstarter dat het handig is om het bedrag niet in centen op te slaan, maar je geeft dan vervolgens niet aan hoe dit dan wel zou moeten gebeuren. Daarmee creëer je zelf een opening niet?

Ook wordt niet echt duidelijk of dat de huidige wijze van opslag in centen echt is gekozen vanwege de informatie die iDeal verwacht of dat dit toch meer een samenloop van omstandigheden is en niet zozeer een oorzakelijk verband.

Ik bedoelde natuurlijk een type wat enigszins geschikt is voor de opslag van bedragen, ik dacht dat zoveel wel duidelijk was.

En dat je dus, als je alles in centen opslaat, je al deze bedragen ook als zodanig moet behandelen.

Mogelijk is de verwarring over het omrekenen ontstaan doordat wij een komma gebruiken als decimaal scheidingskarakter, terwijl dit in PHP / MySQL een punt is. Hoe je bedrag uiteindelijk wordt gepresenteerd is iets compleet anders dan hoe je er mee rekent.
Gewijzigd op 30/07/2015 20:46:17 door Thomas van den Heuvel
 
Eddy E

Eddy E

30/07/2015 20:46:47
Quote Anchor link
Afbeelding

Iemand een bakje Rooibos?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.