【问题标题】:number_format without decimal argumentnumber_format 不带小数参数
【发布时间】:2018-03-15 14:09:48
【问题描述】:

我想使用number_format() 函数而不指定小数位数。 (如果是 2 位小数,则显示 2,如果是 5,则显示 5)

这可能吗?

非常感谢

【问题讨论】:

  • 然后只是回显浮动? 3v4l.org/eZ5dt
  • 对你来说,我允许使用number_format 函数而不指定小数位数。拜托,试试我的儿子。对你来说,它会起作用的。
  • 问之前有试过吗?它需要更少的努力!
  • 很抱歉,但有了这个,它就不起作用了。我想保持格式:number_format($number, null, ',', ' ')
  • @N.B.如果您将一个数字传递给number_format() 而不定义小数位数(仅使用一个参数),该函数将返回一个整数(删除任何小数)。如果您确实想要格式化数字(设置不同的小数分隔符/千位分隔符),那么您必须定义所需的小数位数。您根本无法仅使用 number_format() 完成 OP 所要求的操作。

标签: php


【解决方案1】:

您可以在使用 numberformat 之前计算小数位数并在函数中使用它。

$number = 50001/4;

If(strpos($number, ".") !== false){
    // Is float
    $decimals = strlen($number) - (strpos($number, ".")+1);
}Else{
    // Is integer == no decimals
    $decimals =0;
}

Echo number_format($number, $decimals, ',', ' ');

https://3v4l.org/DULp4

【讨论】:

    【解决方案2】:

    如果这真的是你想要的,即使这完全没用,它也可能会起作用

    function numberOfDecimals($value)
    {
        if ((int)$value == $value)
        {
            return 0;
        }
        else if (! is_numeric($value))
        {
            // throw new Exception('numberOfDecimals: ' . $value . ' is not a number!');
            return false;
        }
    
        return strlen($value) - strrpos($value, '.') - 1;
    }
    
    $number = 1.23456;
    print number_format($number,numberOfDecimals($number));
    

    学分:PHP: get number of decimal digits

    【讨论】:

      猜你喜欢
      • 2013-05-30
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多