Hoe reken je met commagetallen binnen een array?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snelle Jaap

Snelle Jaap

08/03/2018 16:18:33
Quote Anchor link
Ik heb een winkelmandje dat de prijzen vermenigvuldigt met het aantal (quantity) producten.
Dit werkt, alleen wanneer een product een comma heeft, laten we zeggene 1199,95, dan rond mijn PHP dit automatisch af en krijg ik altijd een rond getal terug, en niet het juiste getal.

Hoe krijg ik dat voor elkaar?

Dit is nu hoe ik mijn subtotaal krijg (binnen een loop met daarin de producten):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$totalsum[] = $cartproduct['quantity'] * $cartproduct['price'];
$totaladded = array_sum($totalsum);


Hier komt dus altijd een afgerond getal uit.
 
PHP hulp

PHP hulp

22/12/2024 05:14:47
 
Ramon van Dongen

Ramon van Dongen

08/03/2018 16:21:49
Quote Anchor link
Je zult de komma om moeten zetten naar een punt.

Dus 9.95.

Na de berekening kun je (bijvoorbeeld met number_format()) weer de komma erin terug laten komen.
 
Snelle Jaap

Snelle Jaap

08/03/2018 16:38:50
Quote Anchor link
Ramon van Dongen op 08/03/2018 16:21:49:
Je zult de komma om moeten zetten naar een punt.

Dus 9.95.

Na de berekening kun je (bijvoorbeeld met number_format()) weer de komma erin terug laten komen.


Bedankt dit werkt.

Ik heb het nu zo opgelost:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$pricecomma = str_replace(',','.',$cartproduct['price']);
$totalsum[] = $cartproduct['quantity'] * $pricecomma;
$totaladded = array_sum($totalsum);

<strong>Subtotaal:</strong><span class="amount"> '.number_format($totaladded).'</span>


Alleen heb ik wel een probleem, het getal wordt nu naar boven afgerond. Hoe kan ik dat voorkomen?

Wanneer ik 1 product toevoeg van 1199,95 dan staat er een prijs van 1200 in mijn winkelmand.
 
Ben van Velzen

Ben van Velzen

08/03/2018 17:02:50
Quote Anchor link
Number_format rondt ook af als je onvoldoende decimalen specificeert om een exacte weergave te geven. Je geeft geen aantal decimalen, dus wordt er afgerond op gehele getallen.
 
Jan te Pas

Jan te Pas

08/03/2018 17:14:47
Quote Anchor link
Dit gebruik ik in de presentatie van geld: number_format($var1,2,',','.');
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2018 17:34:40
Quote Anchor link
Hoe je iets weergeeft op het scherm en hoe je ergens intern mee rekent zijn twee compleet verschillende dingen.

Afronden doe je doorgaans ook alleen maar helemaal aan het einde, en niet tussentijds.
 
Snelle Jaap

Snelle Jaap

09/03/2018 10:15:16
Quote Anchor link
Thomas van den Heuvel op 08/03/2018 17:34:40:
Hoe je iets weergeeft op het scherm en hoe je ergens intern mee rekent zijn twee compleet verschillende dingen.

Afronden doe je doorgaans ook alleen maar helemaal aan het einde, en niet tussentijds.

Dat snap ik maar ik zal toch in de array de komma voor een punt moeten veranderen want anders rekent hij vanuit amerikaanse manier (1,000,000 ipv 1.000.000).

Afronden wil ik juist niet. Maar ik heb het op deze manier voor elkaar gekregen:

number_format($totaladded,2,",",".")
 



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.