2016-06-27 86 views
3

我使用PHPnumber_format來表達產品的價格,使用小數點,千位分隔符等。例如:PHP數字格式與整數格式

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

輸出$20.46

但是,我想,如果價格是整數,例如$price = 20.00,輸出$20。是否有其他功能或規則來實現這一點,如果沒有必要,避免小數點?

+0

我選擇billyonecan解決方案,因爲它非常優雅。我認爲這個函數本身可能有一個「尊重」整數的參數,但事實並非如此,它只需要if-else比較就足夠了,這種三元形式相當優雅。 – Cesar

回答

5

只是做$price塑像作爲整數針對$price一個鬆散的比較,如果它們匹配的作用有點溶液(即它是一個整數),您可以格式化爲小數點後0位:

number_format($price, ((int) $price == $price ? 0 : 2), '.', ','); 
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 

內部,這相當於鑄造用浮動(浮動)$價格或floatval($價格),但我覺得很簡單。

+0

但這不是理想的結果,只有當價格是整數時,尾隨零才能被移除 – billyonecan

+0

@billyonecan你可以嘗試echo 1000000 + 0; // 1000000' – Developer

+0

'echo 966.70 + 0; // 966.7' - 想要的結果是'966.70' – billyonecan

3

您可以使用三元運算FOT說:

$price = 20.456; 
    print "$" . ($price == intval($price) ? number_format($price, 0, "", ",") : number_format($price, 2, "", ",")); 
1

可以使用floor()功能

$price = 20.456; 
echo '$'.floor($price); // output $20 
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

2

,對於任何數量的

$price = "20.5498"; 
$dec = fmod($price, 1); 
if($dec > 0) 
    print "$" . number_format($price, 2, ".", ","); 
else 
    print "$" . floor($price);;