PHP printf 函数及其奇怪的行为

uns*_*ska 4 php printf integer

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

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

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

echo printf("%.2f", 1.1234);
// 1.124
Run Code Online (Sandbox Code Playgroud)

首先,它似乎打印了太多小数,我不知道这些数字是什么。有人可以解释一下这个问题吗?

Alm*_* Do 5

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

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

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

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

printf("%.2f", 1);
Run Code Online (Sandbox Code Playgroud)

或者与 echo 一起使用sprintf()

echo sprintf("%.2f", 1);
Run Code Online (Sandbox Code Playgroud)