四舍五入到一位小数

时间:2016-02-26 14:34:32

标签: php numbers rounding

我正在使用一个函数来生成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>

1 个答案:

答案 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;

}