2011-05-18 58 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