3

私はさらにいくつかの PHP チュートリアル、特にDevZone PHP 101に取り組んでおり、次のことで混乱しています。

echo .sprintf("%4.2f", (2 * $radius * pi()))

私はこれを見つけました

これは、後続の最初のパラメーターの値を使用して、4 桁幅で小数点以下 2 桁の浮動小数点フィールドを生成することを意味すると思います。

これは、プログラミング言語の C/C++ 系に由来します。sprintf() は、最初のパラメーターをフォーマット ステートメントとして受け取ります。% で始まるものはすべてフィールド指定子です。それ以外は印刷可能なテキストです。したがって、すべてのテキストを指定して指定子を指定しないフォーマット ステートメントを指定すると、表示どおりに正確に出力されます。フォーマット指定子を使用すると、処理するデータが必要になります。

しかし、いくつかの異なる値を試した後、私はまだそれを得ていません。この場合の目的は、小数点以下を 2 桁に制限することだけだと私には思えます。

.sprintf("%.2f", (2 * $radius * pi()))

その前にある 4 のポイントは何ですか? PHPマニュアルでは、合計文字数を4にする必要があると判断すると信じていますが、(a)小数点が5文字になるためそうではなく、(b)に変更しようとしたためそうではありません%8.2f のようなより大きな数で、どちらの端にもゼロを追加しませんでした。誰かがこれをよりよく説明してください。

ありがとう!

4

1 に答える 1

7

フォーマット指定子の最初の数字 % 8 .2f は、長さを埋めるためのものです。デフォルトでは、sprintf はスペース文字を使用します。

より大きな数値で効果を確認できます。

printf("%20.2f", 1.23);

たとえば、次のようになります。

                1.23

数字の前に 16 個のスペースがあります。フロートは 4 を占め、塗りつぶしの長さはたとえば 20 に設定されています。(おそらく、Web ページに印刷したため、パディング スペースが表示されませんでした..)

また、マンページのさらに下に、sprintf代替パディング文字を使用する例があります。

printf("%'*20.2f", 1.23); // use the custom padding character '*'

結果は次のとおりです。

****************1.23
于 2013-02-08T01:55:48.300 に答える