2011-10-19 61 views
0

只是一點點堅持,試圖找到使用正確的函數:的樣式與PHP的十進制數

$number = "4.999"; 
echo number_format($number, 2); //5.00 

我們希望它顯示爲4.99 - 我們應該用什麼PHP函數,它不會圓什麼,只是純粹將小數點後的數字限制爲兩個?

回答

3

使用printf

printf('%.2f', $number); 

%.2f打印浮點數與2位小數)


編輯我讀過你的問題錯了的第一次。你所要求的是四捨五入至小數點後2位數字,然後顯示它:

$number = floor($number*100)/100; 
printf('%.2f', $number); 
+0

這仍然輸出爲5.00,如果我將它分配給一個變量,它輸出爲5.004 – Latox

+0

您的編輯似乎在打印時工作,但將其分配給一個變量時,它不會,我猜是用sprintf替換printf? – Latox

+0

@Latox,yes'printf'會輸出字符串並返回它的長度,而['sprintf'](http://php.net/sprintf)會返回字符串 - 你原來使用的回答是回顯,所以我去了'printf' route – knittl

1

它實際上這個功能的濫用,但它適用於字符串和不從浮充轉換的不準確遭受也不是什麼圓:

echo bcadd("4.999", "0", 2); 

http://www.php.net/manual/en/function.bcadd.php

或者乾脆:

echo substr($num, 0, strpos($num, '.') + 3); 
+0

這是很好用嗎?它比上面的答案要乾淨得多.. – Latox

+0

我不知道爲什麼,除了它感覺有點髒。 ; O) – deceze