1

printf は出力に使用され、 sprintf は保存に使用されることを知っています。

しかし、このコードでは:

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

1.33 が出力されるのはなぜですか? 1.31.3を出力すると思いますか?

4

1 に答える 1

6

PHPのprintf関数は、実際には2つのことを行います。引数を出力し(フォーマット文字列に従って、最初の文字列として送信されます)、この出力された文字列の長さを返します。

通常、によって返される値はprintf使用されませんが、この場合は使用されません。ここで(形式によって)printf「1.3」文字列(小数点以下1桁のみ)を出力する必要があるため、その長さは3です。したがって、$str変数に格納され、次のステートメント(with echo)で出力されます。したがって、全体の出力は「1.33」です。

補足として、これは...

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

...「1.31」を出力ます。printも2つのことを行うため、引数を出力して1を返します。

于 2012-11-05T00:36:24.123 に答える