我使用PHP
number_format
来表示产品价格,使用小数点,千位分隔符等。例如:
$price = 20.456;
print "$" . number_format($price, 2, ".", ",");
输出$20.46
。
但是,我希望如果价格为整数(例如$price = 20.00
),则输出$20
。是否有其他功能或规则来实现这一点,如果没有必要,可以避免小数点?
答案 0 :(得分:6)
只需将$price
强制转换为整数与$price
进行比较,如果它们匹配(即它是一个整数),则可以格式化为0位小数:
number_format($price, ((int) $price == $price ? 0 : 2), '.', ',');
答案 1 :(得分:3)
尝试$price = 20.456 +0 ;
$price + 0 does the trick.
echo 125.00 + 0; // 125
echo '125.00' + 0; // 125
echo 966.70 + 0; // 966.7
在内部,这相当于使用(浮动)$ price或floatval($ price)进行浮动,但我发现它更简单。
答案 2 :(得分:3)
您可以使用以下三元运算符:
$price = 20.456;
print "$" . ($price == intval($price) ? number_format($price, 0, "", ",") : number_format($price, 2, "", ","));
答案 3 :(得分:2)
一个小辅助函数my_format
,用于确定该数字是否为整数,然后返回相应的字符串。
function my_format($number)
{
if (fmod($number, 1) == 0) {
return sprintf("$%d\n", $number);
} else {
return sprintf("$%.2f\n", $number);
}
}
$price = 20.456;
echo my_format($price);
echo my_format(20);
将输出
$20.46 $20
答案 4 :(得分:2)
适用于任何数字的小解决方案
$price = "20.5498";
$dec = fmod($price, 1);
if($dec > 0)
print "$" . number_format($price, 2, ".", ",");
else
print "$" . floor($price);;
答案 5 :(得分:1)
您可以使用floor()
功能
$price = 20.456;
echo '$'.floor($price); // output $20