1

変更する必要のあるGoogle座標がありますが、たとえば、それらをエコーすると、

echo (string)28.9871692657471;

私はの結果を得る

28.987169265747

最後の「1」が消える

echo (string) 28.9875984191895

最後の「5」が消える

キャストせずに直接エコーしてみましたが、何も変わっていません。この基本的な操作をしたいのですが、

28.9875984191895 + 0.0000000000001 = 28.9875984191896

足りないものはありますか?インターネットで検索しても何も見つからなかったので

4

3 に答える 3

4

浮動小数点数はそのためには十分に正確ではありませんが、いずれの場合も、php.ini設定precisionは浮動小数点を文字列にキャストするときに表示される小数点以下の桁数に影響するため、調整してみてください(php.iniファイルを編集するか、を使用してくださいini_set("precision",50);

于 2013-01-27T19:00:46.840 に答える
2

浮動小数点数に関するPHPドキュメントによると:

したがって、浮動小数点数の結果を最後の桁まで信頼しないでください。また、浮動小数点数を直接比較して等しいかどうかを確認しないでください。より高い精度が必要な場合は、任意精度の数学関数gmp関数を使用できます。

于 2013-01-27T19:01:57.413 に答える
1

これを試してみてください

echo bcadd("28.9875984191895", "0.0000000000001", 13);

最後のパラメーターは、表示する小数点以下の桁数です。

于 2013-01-27T19:58:55.327 に答える