我知道 printf 用于输出, sprintf 用于存储。
但在这段代码中:
$str = printf('%.1f', 1.3);
echo $str;
为什么输出 1.33?我假设它会输出 1.31.3?
PHP 中的printf函数实际上做了两件事:打印其参数(根据格式字符串,作为第一个发送)并返回此打印字符串的长度。
通常不使用返回的值printf
- 但在这种情况下不是。由于(按格式)printf
这里必须打印“1.3”字符串(小数点后只有一位),它的长度是 3 - 所以它存储在$str
变量中并在下一个语句中打印(带有echo
)。所以整个输出是'1.33'。
作为旁注,这...
$str = print(1.3);
echo $str;
... 打印 '1.31',因为print也做了两件事 - 打印它的参数并返回 1。