Versio

afronden($getal, afronding)

Deze functie is een net andere versie van round(), maar kan afronden op hele getallen (zoals 20).
Het rond dus getallen af naar een veelvoud van $afronding.
afronden(122, 10); geeft 120, omdat 120 het dichtstbijzijnde veelvoud van 10 is.
Zo geeft afronden(9.95, 10); dus 10 terug terwijl
afronden(234.281, 0.105); 234.255 teruggeeft.

Zie bijvoorbeeld:
http://www.zunflappie.nl/temp/afronden.php?afronding=20
http://www.zunflappie.nl/temp/afronden.php?afronding=5
http://www.zunflappie.nl/temp/afronden.php?afronding=8

Werkt zowel met decimalen etc.
Vooral bruikbaar (in reallife) bij hoeveel geld je hebt.
Als je 1228,28 euro hebt noem je dat 1200 euro.
In deze functie is dat: afronden(1228.28, 100);, wat dus 1200 geeft.

[BIJGEWERKT!!!]
Deze functie kan vanaf nu ook tijden afronden.
Afronden kan op uren, minuten en seconden.

Zie bijvoorbeeld:
http://www.zunflappie.nl/temp/afronden.php?afronding=0:30
http://www.zunflappie.nl/temp/afronden.php?afronding=0:00:30
http://www.zunflappie.nl/temp/afronden.php?afronding=4:00

Voorbeeld: http://www.zunflappie.nl/temp/afronden.php

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. afrondendollargetal-afronding

 

16 reacties op 'afronden($getal, afronding)'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Citroen Anoniem Graag
Citroen Anoniem Graag
5 jaar geleden
 
0 +1 -0 -1
Laat maar,, ik zie nu het teksje pas..
Peter Wessels
Peter Wessels
5 jaar geleden
 
0 +1 -0 -1
[qoute] Deze functie is een net andere versie van round(), maar kan afronden op hele getallen (zoals 20). [/qoute]

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$string
= "122,10";
$round = round($string, 0);

echo $round;
?>


Output: 122;

Round kan dat ook, of heb ik het nou verkeerd?
Luuk Schakenraad
Luuk Schakenraad
5 jaar geleden
 
0 +1 -0 -1
Ja dat klopt, round() werkt zo:
round(12.34, 1); -> 12.3
round(12.34, 0); -> 12
round(12.34, -1); -> 10

maar deze functie werkt zo:
afronden(1234, 1); -> 1234
afronden(1234, 10); -> 1230
afronden(1234, 100); -> 1200
afronden(1234, 1000); -> 1000
Peter Wessels
Peter Wessels
5 jaar geleden
 
0 +1 -0 -1
En wat is dan de toevoeging van dit script? Want round(), kan precies hetzelfde, het werkt alleen heel ietsje anders.

Heb de vorige script van je gemist, maar wil je me uitleggen hoe dit script verschilt met round()?
Douwe
Douwe
5 jaar geleden
 
0 +1 -0 -1
Voor het verschil moet je de tekst even lezen :) En functies hebben altijd als nut dat het ook met veel code kan, maar zo met veel minder ;)
Eddy Erkelens
Eddy Erkelens
5 jaar geleden
 
0 +1 -0 -1
Zoals Tommy het reeds verhelderde is dit geen vervanger van round() maar een soortgelijke functie.

Het rond getallen af naar de dichtstbijzijnde veelvoud van $afronding.
Je kan met deze functie dus zoeken naar het dichtstbijzijnde getal in de tafel van $afronding.
Round() kent alleen de tafel van 1, 10, 100, 1000 etc.
Deze functie kent alle tafels (dus ook die van 25, 100, 5 etc).
Dus wil je het het 5-tal weten van 122, dan wordt dat 120 (want 120 zit in de tafel van 5 en 122 niet).
Wil je het 25-tal weten van 125, dan wordt dat 125. Want 125 zit in de tafel van 25.

Het zoekt dus het getal in de tafel van $afronding welke het dichte bij $getal ligt.
Een aantal voorbeelden van de tafel van 5:

afronden(12.4, 5); = 10
afronden(13.3, 5); = 15
afronden(22, 5); = 20
afronden(12382, 5); = 12380

Bij geld zou je dit gebruiken.
Je zegt niet dat je 61,32 euro in je portomonee hebt, maar 60 euro.
Dus afronden(61.32, 10); geeft 60.
Dat kan met round ook, maar als ik wil weten welk 20-tal (denk aan muntjes van 20 cent) hebt, is round() daartoe niet voldoende toegerust.
Eddy Erkelens
Eddy Erkelens
5 jaar geleden
 
0 +1 -0 -1
Ik heb het voorbeeld iets aangepast:

http://www.zunflappie.nl/temp/afronden.php?afronding=20
http://www.zunflappie.nl/temp/afronden.php?afronding=5

Met het laatste cijfer kan je het even uitproberen, wat toch makkelijker zal werken.
Peter Wessels
Peter Wessels
5 jaar geleden
 
0 +1 -0 -1
@Douwe M
Dat stond er nog niet toen ik dat schreef;)

@Eddy Erkelens

Ik snap hem;).
Jesper Diovo
Jesper Diovo
5 jaar geleden
 
0 +1 -0 -1
Ik moet zeggen, ik kan hier meer wijs uit dan uit round(). :P Leuk script, Eddy :-).
Luuk Schakenraad
Luuk Schakenraad
5 jaar geleden
 
0 +1 -0 -1
Dit is idd een nuttige toevoeging, zeker dat afronden op bijv 5 en van 25..
Felix b
Felix b
5 jaar geleden
 
0 +1 -0 -1
wat je ook kan gebruiken is modulo

dan krijg je zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?
function afronden($getal, $afronding)
{

        if(!is_double($getal) AND !is_int($getal) AND (!is_double($afronding) AND !is_int($afronding)))
        {

        return false;
        }

    $rest = fmod($getal,$afronding);
    return ($rest / $afronding <= 0.5) ? $getal - $rest:($getal - $rest) + $afronding;
}

?>
Eddy Erkelens
Eddy Erkelens
5 jaar geleden
 
0 +1 -0 -1
Dat doet inderdaad hetzelfde. Ik kon die functie fmod() dus niet vinden.
In theorie zal dit hetzelfde moeten doen, maar daarbij kreeg ik onlogische antwoorden en heb ik het dus iets aangepast:

[linebreak]$rest = $getal % $afronding;[linebreak]

Maar goed, bovenstaande functie van Felix doet inderdaad hetzelfde, zij het wel korter.

Edit:

Script iets gewijzigd.
Er is een extra fouten-controle toegevoegd of de getallen niet 0 zijn.
En in plaats van een false terug te geven, geeft de functie het begingetal terug. Zo kan er minder fout gaan, en mocht het fout gaan, dan is er geen man overboord.
Eddy Erkelens
Eddy Erkelens
4 jaar geleden
 
0 +1 -0 -1
Even bumpen: we kunnen met deze functie vanaf nu ook TIJDEN afronden.
Bijvoorbeeld:

23:12:20 afronden met 0:30 (halve uren) wordt: 23:00:00
23:41:28 afronden met 0:30 (halve uren) wordt: 00:00:00
1:01:01 am afronden met 0:15 (kwartieren) wordt: 1:00:00
1:01:01 pm afronden met 0:15 (kwartieren) wordt: 13:00:00

Gebruik de voorbeelden om te spelen/testen!


Suggeties en verbeteringen (én kritiek!) zijn welkom!
Tikkes C
Tikkes C
4 jaar geleden
 
0 +1 -0 -1
het afronden van negatieve getallen komt positief als resultaat...terwijl ik denk dat dat dan 0 moet worden...niet?
Arian Stolwijk
Arian Stolwijk
4 jaar geleden
 
0 +1 -0 -1
Doet dit trouwens niet het zelfde??
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function afronden($getal,$veelvoud){
    if($veelvoud == 0){
        // lim->0 wordt gewoon weer het getal
        return $getal;
    }

    return round($getal / $veelvoud) * $veelvoud;
}

?>
Eddy Erkelens
Eddy Erkelens
4 jaar geleden
 
0 +1 -0 -1
@ Tikkes: ik zal er een abs() over gooien inderdaad.
@ Arian: gedeeltelijk, maar dan moet je alsnog bij de round() de afronding (aantal cijfers achter komma etc) opgeven.
Het kan dus wel, maar wat ik nu heb, vind ik iets overzichtelijker.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Labels
  • Geen tags toegevoegd.