将浮点数格式化为两位小数

39

我想将一个浮点数格式化为两位小数。

例如,如果我的价格是5.2,我想将其格式化为5.20


2
http://www.php.net/manual/en/function.sprintf.php - user166390
4个回答

73

1
这可能也会有所帮助:http://php.net/manual/en/function.money-format.php - FluffyJack
5
请记住,number_format函数返回的是一个字符串,因此你的浮点数将不再是浮点数类型。如果你试图在计算中使用结果数字,可能会得到不想要的结果。你可以通过使用floatval()函数将其转换回浮点数类型。 - Baxny
1
注意:+number_format("5.2",2);将给你一个数字,而不是number_format("5.2",2),它会给你一个字符串。无论如何,在一般情况下,我的首选始终是sprintf('%0.2f', $num)。我从来没有一个有效的理由去做基准测试,如果你有一个有效的理由除了个人喜好(或上下文),请告诉我。干杯! - Fr0zenFyr
1
请注意:number_format函数会将您的数字四舍五入... 例如,number_format('21.188624', 2, ',', ' ') 的结果是 21,19。https://dev59.com/42865IYBdhLWcg3wZdtW - syoels
重要提示:如果您想使用结果进行计算,正如Baxny所提到的那样,将number_format(n > 999, 2)强制转换会导致结果为1。您无法将带有逗号的数字字符串进行强制转换或计算,因此请确保删除它:number_format('5.2', 2, '.', ''); - ShaneOH

5

您需要使用printfsprintf。您可以在php文档中了解更多信息。


3

试试这个:

number_format((float)$foo, 2, '.', '');

请考虑编辑您的答案,包括解释您的代码如何解决手头的问题。 - Matt
@Matt 这个答案已经够好了... 看一下排名第一的答案,完全一样... - Fipsi

3
如果您只是想确保数字显示为两位小数,您也可以使用number_format,或者(如果这是一个货币值)money_format
例如:echo number_format('5.2', 2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接