【问题标题】:Number format in PHPPHP中的数字格式
【发布时间】:2012-05-25 13:48:11
【问题描述】:

我想在首页显示价格。但所需数字的格式是,

  • 输入价格:10000 显示:10,000
  • 输入价格:10000.10 显示:10,000.1
  • 输入价格:10000.01 显示:10,000.01

如果我使用以下代码

echo  number_format ($price,2,'.',',');

但是通过这种方式,结果以这种方式显示。
输入价格:10000 显示:10,000.00

请帮我解决这个问题

【问题讨论】:

    标签: php number-formatting


    【解决方案1】:

    PHP 中有一个名为money_format() 的函数。

    http://php.net/manual/en/function.money-format.php看看它

    【讨论】:

    • money_format 对此有何帮助?它也不考虑可变小数。仍然需要在格式说明符中输入你想要的数量。
    【解决方案2】:

    您已将小数点数设置为 2,这就是您拥有 10,000.00 的原因。尝试以这种方式用户:

    echo  number_format ($price,1,'.',',');
    

    如果您使用的是金钱价值,最好使用money_format

    【讨论】:

    • OP 希望 10,000.01 有 2 个小数点,10,000.1 需要 1 个小数点。
    【解决方案3】:

    当然,从清晰度和一致性的角度来看,小数点后保留 2 位数字更有意义,尤其是在显示价格时。

    @barryhunter 提出了一个有效的观点,但以下内容不起作用。

    echo rtrim(number_format($price,2,'.',','),'0.');
    

    但是,这样做:

    trim(trim(number_format($price,2,'.',','),'0'),'.');
    

    看:

    <?php
    $a=array('10000.00','10000.10','10000.01');
    
    foreach ($a as $price)
    {
        echo $price.' - '.rtrim(rtrim(number_format($price,2,'.',','),'0'),'.')."\n";
    }
    ?>
    
    $> php -f t.php
    10000.00 - 10,000
    10000.10 - 10,000.1
    10000.01 - 10,000.01
    

    【讨论】:

    • 那行不通,会去掉实际数字中的结尾零,所以当 $price=10000;它会输出“10”,而不是想要的!
    • @barryhunter - 好点。我很抱歉。忽略我的回答。没用!
    • 好的。我有另一个想法并整理了我之前的答案。感谢@barryhunter - 谢谢!
    • @daveyBoy。这无济于事
    • @user1179868 - 它怎么没有帮助?它将以您要求的格式格式化您提供的示例数字 - 去掉尾随的 0 和货币小数点。你到底在追求什么?
    【解决方案4】:

    我个人会做

    echo number_format($price,floor($price)==$price?0:2,'.',',');
    

    将价格显示为 10,000.1 对我来说很奇怪。

    但如果你真的必须这样做

    $bits = explode('.',$price);
    echo number_format($price,strlen($bits[1]),'.',',');
    

    (编辑)回复评论,它对我有用......

    <?php
    $a=array(10000.00,10000.10,10000.01);
    
    foreach ($a as $price)
    {
        $bits = explode('.',$price);
        echo $price.' - '.number_format($price,strlen($bits[1]),'.',',')."\n";
    }
    ?>
    
    $ php t.php
    10000 - 10,000
    10000.1 - 10,000.1
    10000.01 - 10,000.01
    

    【讨论】:

    • burryhunter。感谢您的回复。但不幸的是它不适用于 10000.01 或 10000.1
    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 2016-01-19
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多