0

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

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

如果我使用以下代码

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

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

请帮我解决这个问题

4

4 回答 4

3

PHP 中有一个函数叫做money_format().

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

于 2012-05-25T13:50:37.383 回答
1

当然,从清晰度和一致性的角度来看,小数点后有 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
于 2012-05-25T13:52:45.213 回答
1

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

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

如果您使用货币值,最好使用money_format 。

于 2012-05-25T13:53:05.327 回答
0

我个人会做

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
于 2012-05-25T13:54:18.837 回答