ホームページ >バックエンド開発 >PHPチュートリアル >printf形式の出力の問題について

printf形式の出力の問題について

WBOY
WBOYオリジナル
2016-06-23 13:35:48927ブラウズ

$a = 123.666;
printf("%.2f", $a);
print("%.1f", $b);

結果が
123.67
10.8
前者は四捨五入されているのに、後者は四捨五入されていないのはなぜですか?


ディスカッションへの返信 (解決策)
printf("%.1f %.16f", 10.85, 10.85) //10.8 10.8499999999999996

浮動小数点数 10.85 は、実際には 10 としてマシンに保存されます。 .84999999999999996

したがって、小数点以下 1 桁を取得します。 時間は 10.8 です


実際、高精度が必要な場合は、浮動小数点数の表現と精度をすでに学習していますので、心配する必要はありません。操作には、php
が提供する BC および gml 拡張機能を使用してください
わかりました、ありがとうございます!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。