フロントページに価格を表示したい。ただし、必要な数値の形式は、
- 入力価格:10000 表示:10,000
- 入力価格: 10000.10 表示: 10,000.1
- 入力価格: 10000.01 表示: 10,000.01
次のコードを使用している場合
echo number_format ($price,2,'.',',');
しかし、これにより、結果はこのように表示されます。
入力価格: 10000 表示: 10,000.00
この問題を解決するのを手伝ってください
フロントページに価格を表示したい。ただし、必要な数値の形式は、
次のコードを使用している場合
echo number_format ($price,2,'.',',');
しかし、これにより、結果はこのように表示されます。
入力価格: 10000 表示: 10,000.00
この問題を解決するのを手伝ってください
PHP には という関数がありますmoney_format()
。
http://php.net/manual/en/function.money-format.phpでそれを見てください。
確かに、明確さと一貫性の観点から、特に価格を表示する場合は、小数点以下 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
小数点以下の桁数を 2 に設定したため、10,000.00 になります。この方法でユーザーを試してください:
echo number_format ($price,1,'.',',');
また、お金の値を扱う場合はmoney_formatを使用することをお勧めします。
個人的にはそうするだろう
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