PHP ver gevorderde |
|
Ik heb net een functie voor je geschreven:
<?php
if(!function_exists('roundhalf'))
{
function roundhalf($mFloat, $bToString = false)
{
if(is_string($mFloat) && strpos($mFloat, ',') !== false)
{
$mFloat = str_replace(',', '.', $mFloat);
}
$fFloat = (float) $mFloat;
$fFloat = round($fFloat, 1);
$sFloat = (string) $fFloat;
$fEnd = (float) ('0.'.end(explode('.', $sFloat)));
$mReturn = floor($fFloat);
if($fEnd >= 0.25 && $fEnd < 0.75)
{
$mReturn += 0.5;
}
else if($fEnd >= 0.75)
{
$mReturn += 1;
}
if($bToString)
{
$sReturn = (string) $mReturn;
if(strpos($sReturn, '.') === false)
{
$sReturn .= '.0';
}
$mReturn = str_replace('.', ',', $sReturn);
}
return $mReturn;
}
}
# Je kunt het als string opgeven met punt of komma.
echo roundhalf('3,24'); # output: (float) 3
echo roundhalf('3,24', true); # output: (string) 3,0
# En je kunt hem gewoon als float opgeven.
echo roundhalf(3.3); # output: (float) 3,5
echo roundhalf(3.8); # output: (float) 4
?>
<?php { function roundhalf($mFloat, $bToString = false) { { } $fFloat = (float) $mFloat; $fFloat = round($fFloat, 1); $sFloat = (string) $fFloat; $fEnd = (float ) ('0.'.end(explode('.', $sFloat))); $mReturn = floor($fFloat); if($fEnd >= 0.25 && $fEnd < 0.75) { $mReturn += 0.5; } else if($fEnd >= 0.75) { $mReturn += 1; } if($bToString) { $sReturn = (string) $mReturn; if(strpos($sReturn, '.') === false) { $sReturn .= '.0'; } } return $mReturn; } } # Je kunt het als string opgeven met punt of komma. echo roundhalf ('3,24'); # output: (float) 3 echo roundhalf ('3,24', true); # output: (string) 3,0 # En je kunt hem gewoon als float opgeven. echo roundhalf (3.3); # output: (float) 3,5 echo roundhalf (3.8); # output: (float) 4 ?>
Edit: vergeten $mFloat = voor str_replace(...); te zetten, waardoor als je hem als string met komma opgaf hij niet correct werkte.
Edit2: Nu kun je aangeven of je hem als string terug wilt (met een komma notatie). |