能否使用Smarty PHP将数字格式化为2位小数

31

如何在Smarty PHP中将数字格式化为两位小数?

谢谢。

4个回答

58

string_format 可以接受 sprintf 格式选项:

{$number|string_format:"%.2f"}

这不适用于小数位少于2位的数字。(例如1.9) - hendr1x
是的,它会将 1.5 转换为 1.50 - Peon
2
请记住,如果您想在普通变量“$number”的位置上放置一个表达式,您应该将它们用括号括起来,例如:{($a/$b)|string_format:"%.2f"} - Marco Marsala
你好。这个过滤器有没有办法像这样工作,只有一个例外。如果数字是整数,则显示为那样?也就是说,如果数字是2,则显示2而不是2.00? - paulalexandru
对我没用,我收到了一个关于修饰符不存在的错误。也许只是某些版本的Smarty? - Abhi Beckert

31

{$number|number_format:2} 是你想要的


请记住,如果您想在普通变量“$number”的位置上放置一个表达式,您应该将它们用括号括起来,例如:{($a/$b)|number_format:2} - Marco Marsala
这对我不起作用,它格式化数字为零位小数,忽略参数。 - Abhi Beckert

14
你可以使用round函数,但它只删除小数位而不是增加小数位:

{$number|round:2}


1
这个答案更合适,因为它处理数字舍入和将数字视为数字而不是字符串。 - inam101
1
请记住,如果您想在普通变量“$number”的位置上放置一个表达式,您应该将它们用括号括起来,例如:{($a/$b)|round:2}。引号周围的“2”不是必需的。 - Marco Marsala
1
不要将123更改为123.00 - Andrew
2
这个代码可以进行四舍五入,但并不像 OP 所要求的那样将数字格式化为两位小数(当需要时它不会在末尾添加零)。而且 string_format 似乎有时会进行四舍五入,有时则不会。这段代码可以同时实现这两个功能:{$number|round:"2"|string_format:"%.2f"} - Russell G
这是唯一一个在我运行的Smarty版本上实际起作用并将结果四舍五入到2位小数的答案。 - Abhi Beckert

-3
要显示2而不是2.00,您可以在Smarty PHP中使用replace
以下是示例 -
$number = 2.00

{$number|replace:'.00':''}

Output :- 2 

希望这有所帮助。

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