我想要达到的目标是:
10678.62 then round to 10679 <br/>
10678.67 then round to 10679 <br/>
10678.46 then round to 10678.5 <br/>
10678.43 then 10678.43
我可以使用什么PHP函数让它像上面的例子一样工作?因为据我所知(圆形,天花板等),必须设置逗号后面有多少数字。
逻辑
if .x1 x2 x3 xn (x1 is first number behind comma and so on)
if x1 >= 5 then round to integer (ex: 10678.62 then result 10679)
if x1 < 5 and x2 >=5 then x1 + 1 (ex: 10678.46 then result 10678.5)
if x1 < 5 and xz < 5 then nothing rounded 9 (ex 10678.43 then 10678.43)
基本上我们必须看看x1 >= 5
然后是舍入整数但如果x1 < 5
检查下一个数字x2 >= 5
然后舍入到数字后面的数字,如果没有则然后舍入到逗号后面的两个数字< / p>
任何解决方案都将非常感激。 问候
答案 0 :(得分:0)
你只需说出需要多少位数:
$number = 10678.48;
$pos = strpos($number, '.');
$len = strlen($number);
$digits = substr($number, $pos+1, $len-$pos);
if($digits<50){
echo round($number,1);
}else{
echo round($number,0);
}
答案 1 :(得分:0)
如果我理解你的问题,这应该适合你:
function formatRound($number) {
$decimal = (string) fmod($number, 1);
if ($decimal[2] >= 5) {
return round($number);
}
if ($decimal[2] < 5 && $decimal[3] >= 5) {
return round($number, 1);
}
if ($decimal[2] < 5 && $decimal[3] < 5) {
return $number;
}
}
var_dump(formatRound(10678.62));
var_dump(formatRound(10678.67));
var_dump(formatRound(10678.46));
var_dump(formatRound(10678.43));