$money=271.28; echo $money=floor($money*pow(10,2))/100出力が 271.28 ではなく 271.27 だったことに驚きました
その後、多くの情報を確認し、php 公式 Web サイトで次のことを確認しました:
後で上記の操作の結果を印刷しました:
printf("%.12f", $money*pow(10,2));は結果が次であることを発見しました: 27127.999999999996
それは精度の問題であることが判明しました。統一された解決策はまだ見つかっていません。 2 桁まで正確なデータの再処理を避けるために、コード ロジックに
if ($money - round ( $money, 2 ) < 0.00001) { }else{ $money=floor($money*pow(10,2))/100; }を追加することしかできません。
上記の関数を実装する別の方法 (小数点以下 2 桁まで正確で、3 桁目は切り捨てる) を知っている人がいたら、私に知らせてください。
上記は、PHP の Floor 関数の問題を紹介しました。 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。