Ik heb een getal laten genereren in php.
Vervolgens wordt het getal afgerond op een heel getal.
Maar nu wil ik het volgende en dat lukt me niet:

Het getal moet afgerond worden op 0 of 5.

Dus 21 moet 20 worden en 24 moet 25 worden.
Een lijstje als voorbeeld:

20 = zo houden
21 -> 20
22 -> 25
23 -> 25
24 -> 25
25 -> 25
26 -> 25
27 -> 30
28 -> 30
29 -> 30
30 = zo houden

Het getal kan uit 1 of 2 of 3 cijfers bestaan.

Ik denk dat ik het gehele getal moet ontleden en dan naar het laatste getal moet kijken en die vervolgens laten aanpassen en dan weer het getal aan elkaar plakken.
In theorie weet ik het, maar het lukt me niet om dit te programmeren.

Kan iemand mij opweg helpen?


Volgens mij werkt deze goed, lengte van het getal maakt niet:

<?php

$int = 21;

echo round($int/5) * 5;

?>

Edit: Dit heeft niets met afronden te maken: 22 -> 25 Dit is oplichterij. Wanneer je 22 gaat afronden, dan komt daar toch echt 20 uit. Hetzelfde met 27, dat wordt 25 en geen 30.
<?php

$int = 21;

if($int > 20 and < 30){
$uitvoer = round($int/5) * 5;
}
elseif ($int < 21) {
$uitvoer = 20;
}

elseif ($int > 29) {
$uitvoer = 30;
}
echo "$uitvoer";
?>

:edit:
(srry, frank zei dit al)
Ik laat mijn wiskunde er ook even oplos.
Dit heb ik er van gebakken:
**knip**

Alleen wordt het niet zo afgerond als in jouw voorbeeld. 22 wordt geen 25, maar 20. 23 wordt wel 25.

[edit]Foutje[/edit]
@Steffan: Jouw code doet toch niets extra's ten opzichte van mijn code? Het verschil is alleen dat wat ik in 1 klein regeltje doe, jij met 5 regels doet. De rest van de functie laat ik even buiten beschouwing, dat kun je met mijn code ook zo oplossen.
Frank schreef op 16.03.2006 17:35
@Steffan: Jouw code doet toch niets extra's ten opzichte van mijn code? Het verschil is alleen dat wat ik in 1 klein regeltje doe, jij met 5 regels doet. De rest van de functie laat ik even buiten beschouwing, dat kun je met mijn code ook zo oplossen.


het voordeel van die van steffan is dat het een funcie is en heel makkelijk oproepbaar is met bla(getal);
En onze codes zijn dat niet ;)
@Koen: Dan maak je er toch een functie van.... Het blijft in ieder geval een stuk korter en eenvoudiger:

<?php

function halfround($int)
{
if(!empty($int) and is_int($int))
{
return round($int/5) * 5;
}
else
{
return "Not an integer!";
}
}

$int = 23;

echo halfround($int);

?>
Dat klopt inderdaad :$

Ik 'dacht' gelezen te hebben, dat jouw functie niet werkt(e).

Een kleine verbetering: is_numeric() ipv is_int(), zodat komma getallen ook mogelijk worden.
Heel hartelijk dank.

Met de onderstaande regel is het gelukt.
Was dus eenvoudiger dan ik dacht.

echo round($int/5) * 5;

Bedankt!

Reageren