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