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

4

有没有一种方法可以用PHP显示2(或x)个小数位,但不显示如果是整数的.00?

我已经查看了number_format,但它似乎并不完全适应这种情况..虽然我希望每3个非小数位都有逗号。

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

我的数字以浮点数的形式存储在数据库中,保留2位小数。因此我不一定需要这个。


1
还有money_format - Mike B
1个回答

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);
}

这是一段不错的代码,但我会将 floor($cost) 的结果存储在一个变量中,以防止重复计算同一件事。:) 此外,看起来很好。 - Pateman
这实际上没有任何区别,floor()是一个非常轻量级的函数,它只会运行一两次。(虽然其背后的想法很好,但更适用于像循环参数这样可能运行多次的情况) - Jeroen
我知道,我只是在说遵循良好的编码实践总是没问题的。 :) - Pateman
这个(更具体地说,第一个)很好!我仍然会对第一个应用number_format($cost),因为如果需要的话,我仍然想得到逗号或两个[最后两个参数也不是必需的,因为它们是默认值]。 - Damon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接