PHP ラウンドの問題 (精度の結果が正しくありません)

WBOY
リリース: 2016-06-23 14:21:09
オリジナル
2302 人が閲覧しました

php

以下に示すように、PHP のラウンド関数を 10 進数制御に使用するときに問題が見つかりました:

round(9999999999999.99, 2) 期待値: 9999999999999.99; 実際の値: 10000000000000
round(1111111 1 11111.11、2) 期待値: 1111111111111.11;実際の値: 1111111111111.1

同様の問題に遭遇した人はいますか?これは PHP の既知の欠陥ですか?公式の関連指示は見たことがありません。

注: 私のマシンの PHP バージョンは 5.3.6 です

ディスカッションへの返信 (解決策)

Round 関数には問題ありません
うわー
浮動小数点型の精度については PHP の入門を参照してください
http://www.php.net/manual/zh/ language.types.float.php

round関数は問題ありません
うーん
浮動小数点型の精度についてはPHPの入門を参照してください
http:/ /www.php.net/manual/zh/ language.types .float.php

$a = 1111111111111.11;
echo $a; このコードは何を意味しますか?ラウンドは呼ばれませんか?

round 関数は問題ありません
うわー
浮動小数点型の精度については PHP の入門を参照してください
http://www.php.net/manual/zh/ language.types.float.php

$a = 1111111111111.11;
echo $a;
このコードは何を意味しますか?ラウンドは呼ばれませんか?

出力結果は 1111111111111.1 です。これは、スクリプトのコンパイル時に 1111111111111.11 が 1111111111111.1 に変換されることを意味します。
PHP の浮動小数点型は、精度上の理由から 1111111111111.11 を格納できない可能性があります。
公式の PHP の説明書を読みませんでしたか? 「だから、浮動小数点の結果が最後の桁まで正確であるとは決して信じないでください。」


round 関数には問題ありません
そうですね
浮動小数点型の精度については PHP の入門を参照してください
http://www .php.net/manual/zh / language.types.float.php

$a = 1111111111111.11;
echo $a; このコードは何を意味しますか?ラウンドは呼ばれませんか?

出力結果は 1111111111111.1 です。これは、スクリプトのコンパイル時に 1111111111111.11 が 1111111111111.1 に変換されることを意味します。
PHP の浮動小数点型は、精度上の理由から 1111111111111.11 を格納できない可能性があります。
公式の PHP の説明書を読みませんでしたか? 「だから、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。」


それでは、この例の数値を完全に表示したい場合はどうすればよいでしょうか?


round関数は問題ありません
うろ覚えです
浮動小数点型の精度についてはPHPの入門を参照してください
http://www.php.net/manual/zh/ language.types.float.php

$a = 1111111111111.11 ;
echo $a;
このコードは何を意味しますか?ラウンドは呼ばれませんか?

出力結果は 1111111111111.1 です。これは、スクリプトのコンパイル時に 1111111111111.11 が 1111111111111.1 に変換されることを意味します。
PHP の浮動小数点型は、精度上の理由から 1111111111111.11 を格納できない可能性があります。
公式の PHP の説明書を読みませんでしたか? 「だから、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。」


それでは、この例の数値を完全に表示したい場合はどうすればよいでしょうか?
まだ公式の説明書を読んでいないのですね、非常に明快です、自分で答えを見つけてください



round 関数には問題ありません
うわー
浮動小数点型の精度については PHP の入門を参照してください
http://www .php.net/manual/zh/ language.types.float.php

$a = 1111111111111.11;
echo $a; このコードは何を意味しますか?ラウンドは呼ばれませんか?

出力結果は 1111111111111.1 です。これは、スクリプトのコンパイル時に 1111111111111.11 が 1111111111111.1 に変換されることを意味します。
PHP の浮動小数点型は、精度上の理由から 1111111111111.11 を格納できない可能性があります。
公式の PHP の説明書を読みませんでしたか? 「だから、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。」


それでは、この例の数値を完全に表示したい場合はどうすればよいでしょうか?
あなたはまだ公式の指示を読んでいません。非常に明白です。自分で答えを見つけてください

OK、ありがとう

浮動小数点数は限られた桁数しか格納できません

PHP は高精度の数学関数ライブラリを提供していますブリティッシュコロンビア州、GMP

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!