PHP printf函数和它的奇怪行为

时间:2014-06-19 10:27:30

标签: php integer printf

我很困惑这些数字的含义。对我而言,printf似乎给了我错误的结果。

echo printf("%.2f", 1);
// 1.004

echo printf("%.3f", 1);
// 1.005

echo printf("%.2f", 1.1234);
// 1.124

首先,它似乎打印了太多的小数,我不知道这些数字是什么。有人可以对这件事情有所了解吗?

1 个答案:

答案 0 :(得分:4)

简单。 printf()有一个返回值,它是整数。该值是 - 结果字符串的长度。因此,您的代码正在做两件事:

  • 首先,格式&使用printf()
  • 输出您的字符串
  • 其次,echo()结果,即每个字符串的长度。

这是因为你看到1.004作为第一种情况,例如。它的1.00 4"1.00"字符串的长度为4

如果您打算打印格式化的字符串,请按原样使用printf()

printf("%.2f", 1);

或者使用sprintf()和echo:

echo sprintf("%.2f", 1);