从存储的十进制打印可读成本

时间:2012-06-04 18:08:42

标签: php decimal number-formatting

有没有办法让PHP显示2(或x)个小数位,但如果整数不显示.00

我看过number_format,但它看起来并不完全适应这个......虽然我想每3个非小数位的逗号

34.00  => 34
34.7   => 34.70
12424.9=> 12,424.90

我的数字存储为数据库中带有2个小数位的浮点数,因此我不一定需要

1 个答案:

答案 0 :(得分:1)

你可以做的是先检查它是否是整数,然后用floor()对它进行四舍五入,并检查它是否等于完整的十进制版本。

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

if (floor($cost) == $cost) {
    echo floor($cost);
}
else {
    echo number_format($cost, 2, '.', ',');
}

另一种选择是使用money_format()

echo (floor($cost) == $cost) ? floor($cost) : money_format('%.2n', $cost);

if (floor($cost) == $cost) {
    echo floor($cost);
}
else {
    echo money_format('%.2n', $cost);
}