[解決済み] PHP Printf As Float Precision
2022-01-31 22:12:31
質問
PHPの
printf
関数を使用して、ユーザーのストレージ容量を出力しています。完全な式は次のようなものです。
echo printf("%.02f", ($size/(1024*1024))) . " GB";
ということを考えると
$size == (10 * 1024 * 1024)
と出力されるはずです。
10.00 GB
しかし、そうではありません。それは次のように印刷されます。
10.04 GB
. さらに
echo printf("%.02f", 10)
の結果
10.04
えーっ!?浮動小数点に変換するために整数を与えると、10を10.00000009に変換してしまうのです。
これはどうすれば改善されるのでしょうか?もちろん、整数で出力するのが1つの解決策ですが、値が常に整数とは限りません。5.57GBの場合もあり、その場合はこのスクリプトの精度が非常に重要になります。
そして、うーん...。
echo printf("%d", 10)
の結果
102
何かが大きく間違っている。
どうすればいい?
ということで、どうやら
printf
は、エコーされることを意図していません。全くです。
のインスタンスを変更するだけです。
printf
から
sprintf
はその問題を修正しました。
さらに、echoを削除し、コマンドを単に
printf("%.02f", 10)
は、実際に、印刷されます。
10.00
ただし、echoのようにprintfに文字列を追加することはできないので、注意が必要です。
私に言わせれば、PHPは予期せぬT_FUNCTIONか何かの構文エラーを投げるべきだったのですが、話はそれます。
関連
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] printf/String.Formatに相当するJavaScriptの機能
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] 通貨を表すのにDoubleやFloatを使ってはいけないのですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】空の配列要素を削除する
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?