現在の位置: ホーム> 最新記事一覧> 浮動小数点の精度の問題に遭遇した場合はどうすればよいですか? fdiv()関数で関連するトラブルを簡単に解決することを教えてください

浮動小数点の精度の問題に遭遇した場合はどうすればよいですか? fdiv()関数で関連するトラブルを簡単に解決することを教えてください

gitbox 2025-08-27

phpのfdiv()関数

PHPのFDIV()関数は、浮動小数点分裂を実行し、結果の精度を確保するために使用されます。その使用は非常に単純であり、特に浮動小数点の精度の損失を回避するために、浮動小数点分割操作に適しています。

fdiv()関数の構文:

 <span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-title function_ invoke__">fdiv</span></span><span> ( </span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-variable">$dividend</span></span><span> , </span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-variable">$divisor</span></span><span> )
</span></span>
  • $配当:分割(フロートタイプ)。

  • $ divisor :分割者(フロートタイプ)。

この関数は、分割操作の結果を表すフローティングポイント結果を返します。除数がゼロの場合、警告が投げられ、除数の兆候に応じてINF (無限)または-INF (負の無限)が返されます。

使用の例

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// フローティングポイント分割操作</span></span><span>
</span><span><span class="hljs-variable">$dividend</span></span><span> = </span><span><span class="hljs-number">10.0</span></span><span>;
</span><span><span class="hljs-variable">$divisor</span></span><span> = </span><span><span class="hljs-number">3.0</span></span><span>;

</span><span><span class="hljs-comment">// 使用fdiv関数は浮動小数点分割を実行します</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fdiv</span></span><span>(</span><span><span class="hljs-variable">$dividend</span></span><span>, </span><span><span class="hljs-variable">$divisor</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"消す: "</span></span><span> . </span><span><span class="hljs-variable">$result</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

実行結果:

 <span><span><span class="hljs-section">消す: 3.3333333333333</span></span><span>
</span></span>

FDIV()を使用することにより、従来の部門操作のような精度の一部を失うことなく、浮動小数点分割の結果がより正確であることがわかります。


なぜFDIV()を使用する必要があるのですか?

浮動小数点数のストレージの問題により、一般的な計算結果が期待を満たさない可能性があることがわかっています。たとえば、 FDIV()なしで、このように:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 通常の浮動小数点分割</span></span><span>
</span><span><span class="hljs-variable">$dividend</span></span><span> = </span><span><span class="hljs-number">1.0</span></span><span>;
</span><span><span class="hljs-variable">$divisor</span></span><span> = </span><span><span class="hljs-number">3.0</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$dividend</span></span><span> / </span><span><span class="hljs-variable">$divisor</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"消す: "</span></span><span> . </span><span><span class="hljs-variable">$result</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

次の出力を取得できます。

 <span><span><span class="hljs-section">消す: 0.33333333333333</span></span><span>
</span></span>

それは非常に正確であるように見えますが、この結果は、後続の操作またはディスプレイを実行するときに精度の損失と予期しないエラーを引き起こす可能性があります。

FDIV()を使用した後、計算結果は精度を維持するだけでなく、この機能は、プログラムのクラッシュを回避するために、除数がゼロの場合など、分割の潜在的な問題を自動的に処理します。


fdiv()の利点

  1. 精度の向上FDIV()関数は、浮動小数点数の師団操作を扱うときに、一般的な精度の問題を回避できます。

  2. ゼロ除数の誤差を避けてください:除数がゼロの場合、従来の分割は不安定な結果を返す可能性があり、 FDIV()はINFまたは-INFを安全に返します。

  3. 優れた読みやすさFDIV()を使用すると、コードがより明確かつ明確な意図を作成します。特に、高精度の数学的計算が必要な場合には適しています。