1

我知道 printf 用于输出, sprintf 用于存储。

但在这段代码中:

$str = printf('%.1f', 1.3);
echo $str;

为什么输出 1.33?我假设它会输出 1.31.3?

4

1 回答 1

6

PHP 中的printf函数实际上做了两件事:打印其参数(根据格式字符串,作为第一个发送)并返回此打印字符串的长度。

通常不使用返回的值printf- 但在这种情况下不是。由于(按格式)printf这里必须打印“1.3”字符串(小数点后只有一位),它的长度是 3 - 所以它存储在$str变量中并在下一个语句中打印(带有echo)。所以整个输出是'1.33'。

作为旁注,这...

$str = print(1.3);
echo $str;

... 打印 '1.31',因为print也做了两件事 - 打印它的参数并返回 1。

于 2012-11-05T00:36:24.123 回答