Hoe reken je met commagetallen binnen een array?
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)
1
2
2
$totalsum[] = $cartproduct['quantity'] * $cartproduct['price'];
$totaladded = array_sum($totalsum);
$totaladded = array_sum($totalsum);
Hier komt dus altijd een afgerond getal uit.
Dus 9.95.
Na de berekening kun je (bijvoorbeeld met number_format()) weer de komma erin terug laten komen.
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.
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)
1
2
3
4
5
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>
$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.
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.
Dit gebruik ik in de presentatie van geld: number_format($var1,2,',','.');
Afronden doe je doorgaans ook alleen maar helemaal aan het einde, en niet tussentijds.
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.
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,",",".")