当我使用printf时,
printf("%.2f zł", 20.4);
它返回
20.40 zł9
但我想要
20.40 zł
当我使用sprintf("%.2f zł", 20.4)
时,没有问题。
zł
是波兰货币符号。当我用“l”替换“ł”时,我仍然有这样的问题,所以看起来这与编码无关。
如何正确使用printf作为货币?
答案 0 :(得分:1)
您确定9不是不同打印的结果,在您的代码中会进一步发生吗?尝试注释掉这条printf线,看看9是否还在那里。
如果用常规L替换波兰字符并不能解决问题,那么您正确地评估它不是编码问题。
我能想到的printf()
和sprintf()
之间的唯一区别似乎是他们返回结果的方式:printf
输出到HTML缓冲区,sprintf
返回字符串。
答案 1 :(得分:1)
我明白了。
我写道:
echo printf(...);
而不只是:
printf(...);
在printf()生成的字符串之后,我得到了字符串长度,这是printf返回的值(实际上 - 在123.45值的情况下,添加的数字是9,在20.4的情况下,它是数字8)。