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 に答える