Afronden 2 decimale
Ik heb deze regel in mijn script staan:
echo '<div class="woocommerce-message">Je bent € ' . ($maximum - $current) . ' verwijderd van GRATIS verzending binnen Nederland!</div>';
Ik wil de uitkomst graag afronden in 2 cijfers achter de komma.
dus 0,05 cent ipv 0,050000011 cent.
Wie kan mij helpen??
Groet Henk
echter is dit toevalig iets wat ik heel veel heb moeten doen dus zal ik je helpen
het kan eigelijk op meerdere manieren
wat Adoptive Solution bedoeld is simpelweg de functie round()
voorbeeld
maakt dus 0,05
andere manier is number_format()
echter raad ik deze voor simpelweg afronden af
wordt dus ook 0,05
verder info kan je hierover vinden op php.net
Met number_format() formatteer je een nummer, en dan krijg je dus een string (stuk tekst) terug. En dus evt. extra nullen op het eind. Maar let op, met de default parameters komt er ook een komma tussen de duizendtallen:En met die komma gaat PHP het niet meer als een getal zien ...
Gewijzigd op 09/09/2019 20:20:06 door Rob Doemaarwat
round() gebruik je om getallen af te ronden waarna je er mee verder kunt rekenen of dit afgeronde getal kunt bewaren (bijvoorbeeld in de database).
number_format() gebruik je enkel voordat je het getal "in een bepaald formaat" wilt tonen. Dit gebruik je dus typisch bij de output (In de HTML, een email of een PDF). je kunt er hierna niet meer mee rekenen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$price = 1110.90;
$btw_percentage = 0.21;
$btw_amount = $price * $btw_percentage; // 233.289
// voorkom afrondings verschillen
$btw_amount = round($btw_amount, 2); // afronden op centen: 233.29
$price_incl = $price + $btw_amount; // Yeah ik kan nog steeds rekenen met het afgeronde BTW bedrag :-)
echo number_format($price, 2, ',', '.') . ' + ' . number_format($btw_amount, 2, ',', '.') . ' = ' . number_format($price_incl, 2, ',', '.');
?>
$price = 1110.90;
$btw_percentage = 0.21;
$btw_amount = $price * $btw_percentage; // 233.289
// voorkom afrondings verschillen
$btw_amount = round($btw_amount, 2); // afronden op centen: 233.29
$price_incl = $price + $btw_amount; // Yeah ik kan nog steeds rekenen met het afgeronde BTW bedrag :-)
echo number_format($price, 2, ',', '.') . ' + ' . number_format($btw_amount, 2, ',', '.') . ' = ' . number_format($price_incl, 2, ',', '.');
?>
Resultaat:
Gewijzigd op 09/09/2019 21:54:11 door Frank Nietbelangrijk
Voor jullie natuurlijk allemaal gesneden koek, voor mij niet.
Ik ben geen programmeur en weet hier niet veel van.
Sorry voor mijn onwetendheid, ik wilde alleen een stukje in mijn website mooier maken voor de bezoekers.
Gelukkig heb ik meer verstand van ..... :-)
Frank Nietbelangrijk op 09/09/2019 21:51:46:
round() gebruik je om getallen af te ronden waarna je er mee verder kunt rekenen
Actually, tussentijds afronden is nagenoeg nooit een goed idee. Afronden doe je bij voorkeur helemaal aan het einde.
Maar inderdaad, iets afronden en (vervolgens) tonen met twee decimalen precisie zijn twee verschillende dingen.
Gewijzigd op 09/09/2019 22:36:21 door Thomas van den Heuvel
de overheid en dan voornamelijk de belastingdienst wil eigenlijk dat als je gaat rekenen het afrond op 3 decimalen, en als de gehele som klaar is pas naar 2
dit heeft te maken met cent verschillen
kleine uitleg hieronder
afronden gaat zo 1 tot 4 is afronden naar beneden
5 tot 9 is afronden naar boven
dus even een voorbeeld
4,55511 + 4,55511 = 9,11022 afgerond 9,11
echter als je deze dus eerst zou afronden dan wordt het
4,56 + 4,56 = 9,12
Quote:
Bij het afronden mag u kiezen uit 2 methodes:
• U rondt af per geleverd goed of verrichte prestatie.
• U rondt het totaalbedrag af.
• U rondt af per geleverd goed of verrichte prestatie.
• U rondt het totaalbedrag af.
De derde afrondingsmethode is eenvoudiger maar pas je later toe: je mag bedragen in belastingaangiften in je voordeel afronden op hele euro's, dus lasten naar boven en baten naar beneden.
Zie: https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/administratie_bijhouden/facturen_maken/btw-bedrag_afronden
en dan gelden er iets andere regels
zolang ik de bedragen niet laat zien aan de klant moet ik ze berekenen met 3 decimalen
op het moment dat er een bedrag in beeld komt en dus afgerond dan is dit met 2 decimalen
en dus vast
ik kan dit niet meer terug draaien want dan komen er fouten :)
die euro afronding heeft de belastingdienst toen ingevoerd omdat veel mensen dus niet goed boekouding doen en er dus altijd cent verschillen zijn
in goede boekhoud software heb je dit dus niet
met cent verschillen kan het belasting verschil soms wel duizenden euros zijn
daarom moet in officiele software het berekent worden met 3
Toevoeging op 10/09/2019 14:32:00:
Ward van der Put op 10/09/2019 11:17:17:
daarin staat precies wat ik dus ook zeg
//////////////////
U gebruikt voor de afronding van het btw-bedrag de rekenkundige methode. Als het bedrag van de verschuldigde btw op de factuur bestaat uit meer dan 2 cijfers achter de komma, dan rondt u het 3e cijfer achter de komma af op hele centen. Dit doet u als volgt:
Is het 3e cijfer achter de komma lager dan 5, dan rondt u het bedrag naar beneden af.
Is het 3e cijfer achter de komma 5 of hoger, dan rondt u het bedrag naar boven af.
het factuur is iets dat een klant of persoon voor zich krijgt en dus kan je deze afronden
echter wordt de gehele berekening die je dus niet ziet, gedaan met deze reken methode :P
Toevoeging op 10/09/2019 14:39:09:
elke andere manier van berekenen geeft op lange termijn problemen
ongeacht of het mag of niet
het zijn in princiepe maar centen, maar als je bv als bedrijf inkomstenbelasting moet betalen
of btw dan kunnen die centen heel gouw oplopen
in miljoenen bedrijven zit hierin heel veel geld
zo is onderandere het idee van bv bitcoins ook deels ontstaan
ik heb een keer voor een bedrijf de gehele boekhouding opnieuw gedaan om dat ze steeds kleine verschillen hadden
aan het eind had ik een belasting terug gave van meer dan 7,000 alleen vanwege die stomme centen
https://www.nrc.nl/nieuws/2008/01/26/ah-let-ook-met-fiscus-goed-op-de-kleintjes-11476029-a1216
Je kunt het probleem overigens ook oplossen door niet (alleen) de uitkomst op te slaan, maar tevens de oorspronkelijke aantallen en prijzen per stuk. Zo behoud je namelijk maximale nauwkeurigheid zonder afronding en kun je achteraf reconstrueren hoe een uitkomst tot stand is gekomen.
Ward van der Put op 10/09/2019 14:54:14:
Je kunt het probleem overigens ook oplossen door niet (alleen) de uitkomst op te slaan, maar tevens de oorspronkelijke aantallen en prijzen per stuk.
haha dat is precies waarom mijn systeem goud waard is volgens belastingdienst:P
in mijn boekhoudsoftware worden de bedragen waarmee gerekend moet worden opgeslagen in de database
en het script die ik heb gemaakt doet de rest in samenwerking met een cache systeem
anders duurt het rekenen heeeeeeeeeeeeeel lang
Sylvester vader op 10/09/2019 12:22:59:
daarin staat precies wat ik dus ook zeg
Ward van der Put op 10/09/2019 11:17:17:
daarin staat precies wat ik dus ook zeg
Nee, daar staat iets heel anders. Er staat niet dat je tussentijds moet/mag afronden op 3 decimalen, maar alleen dat wanneer het onafgeronde bedrag meer dan 2 decimalen bevat, je bij het afronden op basis van de derde decimaal moet bepalen of je de tweede decimaal naar boven of naar beneden afrondt.
Tussentijds afronden, op hoeveel decimalen dan ook, kan altijd tot een 'verkeerde' afronding leiden. Stel dat je het bedrag 7,1445 afrondt op 3 decimalen. Je krijgt dan 7,145, wat bij afronding op 2 decimalen leidt tot 7,15. Terwijl het op basis van het onafgeronde bedrag 7,14 zou moeten zijn.
De kans dat je bij de tweede decimaal afrondingsverschillen krijgt neemt wel af als je tussentijds afrondt op drie decimalen, maar hij is dus niet nul. Het is daarom altijd het beste om te werken met onafgeronde getallen (of op zijn minst een stuk meer dan 3 decimalen te gebruiken). Waarom denk je dat Bitcoins tot op 8 decimalen nauwkeurig worden opgeschreven? En er zijn cryptocurrencies die nog veel preciezer worden uitgedrukt; de handelssites rekenen intern vaak al met 24 decimalen.