2011-05-18 18 views
2

我需要數轉換成具有後他們.00,但只有數量是一個整數,或者它只有1號小數點後,像這樣:簡單的regex在PHP,格式化十進制數

1.4 = 1.40 
45 = 45.00 
34.77 = 34.77 

這個簡單的例子使用了哪些reg exp?

+0

參見:http://php.net/manual/en/function.number-format.php – Yoshi 2011-05-18 12:44:47

回答

1
number_format($number, 2, '.', ''); 

瞭解更多在PHP.net。你不需要確定一個數是否是一個整數 - 只要它是一個數字,它將被格式化爲兩位小數。

如果您想要千位分隔符,請將最後一個參數更改爲','

1

退房PHP的內置功能number_format

你可以傳遞一個變量,它會對其進行格式化,以正確的小數

$number = 20; 
    if (is_int($number)) { 
     $number = number_format($number, 2, '.', ''); 
    } 
0

閱讀number_format

number_format($number, 2, '.', ''); 
+0

你可以更新說明您的解決方案 – MZaragoza 2017-12-22 14:47:53

2

你也可以用printfsprintf

printf("%01.2f", '34.77'); 
$formatted_num = sprintf("%01.2f", '34.77'); 
+0

良好的通話你的答案 - 運行速度比快'約40% number_format()'如果你不需要那個千位分隔符。 – Kelly 2011-05-18 14:55:26

0
$num = 0.00638835; 

$avg = sscanf($num,"%f")[0] /100; 

echo sprintf("%.10f", $avg); 

result 0.0000638835 
+1

你能解釋你在做什麼以及它是如何工作的 – MZaragoza 2017-12-22 00:16:30

+0

sscanf - 根據格式解析字符串的輸入 – 2017-12-22 10:38:01

+0

函數sscanf()是printf()的輸入模擬。 sscanf()從字符串str中讀取並根據指定的格式進行解釋,這在sprintf()的文檔中有描述。 – 2017-12-22 10:38:30