显示小数点后2-4位(php)

显示小数点后2-4位(php),php,Php,我试图找出一种方法来产生以下输出: 4.0000 = 4.00 4.5000 = 4.50 4.454= 4.454 4.54545454 = 4.5455 4.450 = 4.45 基本上,我想确保总有至少2位小数,如果有额外的零,修剪到2位小数。如果小数位数超过4位,则四舍五入并保持在4位 我可以使用: number_format($number, 4, '.', ''); 然后rtrim删除零,但在许多情况下,这将使我的小数位数少于2位。这里有一种方法可以做到: functio

我试图找出一种方法来产生以下输出:

4.0000 = 4.00

4.5000 = 4.50

4.454= 4.454

4.54545454 = 4.5455

4.450 = 4.45
基本上,我想确保总有至少2位小数,如果有额外的零,修剪到2位小数。如果小数位数超过4位,则四舍五入并保持在4位

我可以使用:

number_format($number, 4, '.', '');

然后rtrim删除零,但在许多情况下,这将使我的小数位数少于2位。

这里有一种方法可以做到:

function myround($input) {
    $floor = floor($input);
    $remain = rtrim($input- $floor);
    if(strlen($remain) > 4) {
        return number_format($floor + $remain,4);
    } else {
        return number_format($floor + $remain,2);
    }
}

print_r(myround(4.312423)); //outputs 4.3124
print_r(myround(4.3)); //outputs 4.30
print_r(myround(4)); //outputs 4.00

以下是一种方法:

function myround($input) {
    $floor = floor($input);
    $remain = rtrim($input- $floor);
    if(strlen($remain) > 4) {
        return number_format($floor + $remain,4);
    } else {
        return number_format($floor + $remain,2);
    }
}

print_r(myround(4.312423)); //outputs 4.3124
print_r(myround(4.3)); //outputs 4.30
print_r(myround(4)); //outputs 4.00

如果您希望避免使用正则表达式,我会这样做:

$arr = array();
$arr = 4.0000;
$arr = 4.5000;
$arr = 4.454;
$arr = 4.54545454;
$arr = 4.450;

foreach($arr as $k=>$v)
{
    $arr[$k] = number_format($v, 4, '.', '');

    $vals = exlode('.', (string)$arr[$k]);

    if(substr($vals[1], -1, 1) === '0')
    {
        $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);

        $vals = exlode('.', (string)$arr[$k]);

        if(substr($vals[1], -1, 1) === '0')
        {
            $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);
        }
    }
}

如果您希望避免使用正则表达式,我会这样做:

$arr = array();
$arr = 4.0000;
$arr = 4.5000;
$arr = 4.454;
$arr = 4.54545454;
$arr = 4.450;

foreach($arr as $k=>$v)
{
    $arr[$k] = number_format($v, 4, '.', '');

    $vals = exlode('.', (string)$arr[$k]);

    if(substr($vals[1], -1, 1) === '0')
    {
        $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);

        $vals = exlode('.', (string)$arr[$k]);

        if(substr($vals[1], -1, 1) === '0')
        {
            $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);
        }
    }
}
函数格式\u编号($number){
$str=数字\格式($number,4,'.','');
返回preg_replace('/(?
function format_number($number){
$str=数字\格式($number,4,'.','');

返回preg_replace('/(?使用数字格式并检查两次
if(substr($string,-1)='0'){删除零}
使用数字格式并检查两次
if(substr($string,-1)='0'){删除零}
您可能会想出一个比
格式编号
更好的名称。您可能会想出一个比
格式编号
更好的名称。