我正在使用一个函数来生成1000到1k和1000000到1m,但我想为它添加一个小数,我已经得到了这么多但是它向上舍入而不是向下 所以如果我输入1565我想得到1.5并且只有当我通过1600我想得到1.6(强制向下)我使用这个功能:
public function convert($Input){
if($Input<1000){
$AmountCode = "";
$Amount = $Input;
}
else if($Input>=1000000){
$AmountCode = "M";
$Amount = round(floatval($Input / 1000000), 1, PHP_ROUND_HALF_DOWN);
}
else if($Input>=1000){
$AmountCode = "K";
$Amount = round($Input / 1000, 1, PHP_ROUND_HALF_DOWN);
}
$Array = array(
'Amount' => $Amount,
'Code' => $AmountCode
);
return $Array;
}
场景1: 现在发生了什么,如果我输入1565我得1.6,如果我输入1545我得到1.5有没有人知道如何强行将它围绕下来?
场景2:我输入的数字是10665将输出为10.7k(向上舍入),但我想显示为10.6k(向下舍入)这对于某些原因我无法弄清楚如何做到这一点< / p>
答案 0 :(得分:1)
为了在PHP中进行四舍五入,它们有一个名为floor()的函数。不幸的是,这个函数只返回一个int。但是你可以先通过乘法向下舍入,然后再进行除法。请参阅此帖子:PHP How do I round down to two decimal places?。
这意味着您的代码将是这样的:
else if($Input>=1000000){
$AmountCode = "M";
$Amount = floor(floatval($Input / 100000))/10;
}
else if($Input>=1000){
$AmountCode = "K";
$Amount = floor(floatval($Input / 100))/10;
}