PHP数字格式,整数格式

时间:2016-06-27 09:03:26

标签: php format decimal

我使用PHP number_format来表示产品价格,使用小数点,千位分隔符等。例如:

$price = 20.456;
print "$" . number_format($price, 2, ".", ",");

输出$20.46

但是,我希望如果价格为整数(例如$price = 20.00),则输出$20。是否有其他功能或规则来实现这一点,如果没有必要,可以避免小数点?

6 个答案:

答案 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