");printf("%.1f",$b);結果は 123.6710.8 になります。前者は四捨五入されますが、後者は丸められません。 --"/> ");printf("%.1f",$b);結果は 123.6710.8 になります。前者は四捨五入されますが、後者は丸められません。 --">

ホームページ  >  記事  >  バックエンド開発  >  printf 形式の出力に関する質問

printf 形式の出力に関する質問

WBOY
WBOYオリジナル
2016-06-13 12:18:41867ブラウズ

printf 形式の出力の問題について
$a = 123.666;
printf("%.2f", $a);
$b = 10.85;
print("
"); 🎜>printf("%.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 までご連絡ください。