PHP での不正確な浮動小数点計算を解決する例を共有する
コンピューター プログラミングでは、浮動小数点演算の精度の問題が常に発生します。この記事では、PHP で不正確な浮動小数点演算を解決する例を紹介します。浮動小数点演算の精度の問題を解決する際に、皆さんのお役に立てれば幸いです。ポイント操作。
浮動小数点計算結果の比較
浮動小数点計算の例は次のとおりです:
$a = 0.2+0.7; $b = 0.9; var_dump($a == $b);
出力される結果は: bool (false) です。つまり、ここでの 0.2+0.7 の計算結果は 0.9 と等しくなく、明らかに常識に反しています。
この問題に関して、公式 PHP マニュアルには次のように書かれていました: 明らかに、0.2 のような単純な小数は、精度を少し失うことなく内部バイナリ形式に変換することはできません。これは、有限の桁数で特定の小数を正確に表現することが不可能であるという事実と関係しています。たとえば、10 進数の 1/3 は 0.3333333… となります。
上記の変数を倍精度形式で出力します:
$a = 0.2+0.7; $b = 0.9; printf("%0.20f", $a); echo '<br />'; printf("%0.20f", $b);
出力結果は次のとおりです:
0.89999999999999991118 0.90000000000000002220
明らかに、ここでは、実際には浮動小数点データとして、精度の一部が失われており、精度を達成できません。完全に正確です。したがって、浮動小数点数の結果が最後の桁まで正確であると決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。これは PHP の問題ではなく、コンピュータの内部浮動小数点数処理の問題であることに注意してください。 C や JAVA などの言語でも同じ問題が発生します。
そのため、2 つの浮動小数点数を比較するには、比較する前に必要な精度範囲内で浮動小数点数を制御する必要があるため、bcadd() 関数を使用して浮動小数点数を加算し、精度を (文字列に) 変換します。浮動小数点数の丸め
記事「PHP 丸め関数 ceil と Floor」には例があります:
var_dump(bcadd(0.2,0.7,1) == 0.9); // 输出:bool(true)
浮動小数点数の計算に関する上記の議論の後、これは浮動小数点数の不完全な精度によって引き起こされることがわかります。計算結果:
<?php echo ceil(2.1/0.7); // 输出:4 ?>
浮動小数点数計算に関する上記の議論の後、これは不正確な浮動小数点数計算結果によって引き起こされることがわかったので、round() 関数を使用してそれに対処できます。 :
<?php printf("%0.20f", (2.1/0.7)); // 输出:3.00000000000000044409 ?>
round() 関数は指定された精度に従って丸められますが、小数点以下 1 桁を保持しても丸め結果には影響しません。
関連する推奨事項:
以上がPHP での不正確な浮動小数点計算を解決する例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
