PHP printf在格式化字符串后添加了一些东西

时间:2012-12-08 09:30:53

标签: php printf

当我使用printf时,

printf("%.2f zł", 20.4);

它返回

20.40 zł9

但我想要

20.40 zł

当我使用sprintf("%.2f zł", 20.4)时,没有问题。

是波兰货币符号。当我用“l”替换“ł”时,我仍然有这样的问题,所以看起来这与编码无关。

如何正确使用printf作为货币?

2 个答案:

答案 0 :(得分:1)

您确定9不是不同打印的结果,在您的代码中会进一步发生吗?尝试注释掉这条printf线,看看9是否还在那里。

如果用常规L替换波兰字符并不能解决问题,那么您正确地评估它不是编码问题。

我能想到的printf()sprintf()之间的唯一区别似乎是他们返回结果的方式:printf输出到HTML缓冲区,sprintf返回字符串。

答案 1 :(得分:1)

我明白了。

我写道:

echo printf(...);

而不只是:

printf(...);

在printf()生成的字符串之后,我得到了字符串长度,这是printf返回的值(实际上 - 在123.45值的情况下,添加的数字是9,在20.4的情况下,它是数字8)。