我使用PHP
number_format
來表達產品的價格,使用小數點,千位分隔符等。例如:PHP數字格式與整數格式
$price = 20.456;
print "$" . number_format($price, 2, ".", ",");
輸出$20.46
。
但是,我想,如果價格是整數,例如$price = 20.00
,輸出$20
。是否有其他功能或規則來實現這一點,如果沒有必要,避免小數點?
我使用PHP
number_format
來表達產品的價格,使用小數點,千位分隔符等。例如:PHP數字格式與整數格式
$price = 20.456;
print "$" . number_format($price, 2, ".", ",");
輸出$20.46
。
但是,我想,如果價格是整數,例如$price = 20.00
,輸出$20
。是否有其他功能或規則來實現這一點,如果沒有必要,避免小數點?
只是做$price
塑像作爲整數針對$price
一個鬆散的比較,如果它們匹配的作用有點溶液(即它是一個整數),您可以格式化爲小數點後0位:
number_format($price, ((int) $price == $price ? 0 : 2), '.', ',');
嘗試$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
內部,這相當於鑄造用浮動(浮動)$價格或floatval($價格),但我覺得很簡單。
但這不是理想的結果,只有當價格是整數時,尾隨零才能被移除 – billyonecan
@billyonecan你可以嘗試echo 1000000 + 0; // 1000000' – Developer
'echo 966.70 + 0; // 966.7' - 想要的結果是'966.70' – billyonecan
您可以使用三元運算FOT說:
$price = 20.456;
print "$" . ($price == intval($price) ? number_format($price, 0, "", ",") : number_format($price, 2, "", ","));
可以使用floor()
功能
$price = 20.456;
echo '$'.floor($price); // output $20
小助手功能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
,對於任何數量的
$price = "20.5498";
$dec = fmod($price, 1);
if($dec > 0)
print "$" . number_format($price, 2, ".", ",");
else
print "$" . floor($price);;
我選擇billyonecan解決方案,因爲它非常優雅。我認爲這個函數本身可能有一個「尊重」整數的參數,但事實並非如此,它只需要if-else比較就足夠了,這種三元形式相當優雅。 – Cesar