ホームページ バックエンド開発 C++ 同じ値の float と double を比較すると false が返されるのはなぜですか?

同じ値の float と double を比較すると false が返されるのはなぜですか?

Oct 31, 2024 pm 03:40 PM

Why Does Comparing a Float and a Double With the Same Value Return False?

Double と Float を比較すると予期しない結果が発生する

同じ値 1.1 を持つ float 変数 f と double 変数 d を比較すると、驚くべき結果が返されます。間違い。この予期しない結果は、浮動小数点数の基本的な特性に起因します。

浮動小数点数の精度と丸め

浮動小数点数 (float 型と double 型を含む)には固有の制限があります:

精度: 浮動小数点数は有効桁数の有限制限内の実数を表します。データ型が処理できるよりも高い精度が必要な値は、切り捨てられた表現になります。

丸め: 2 進数は、常に正確な 10 進数表現を持つとは限りません。 2 進数を 10 進数に変換する場合、浮動小数点型の限られた精度に合わせて丸めが行われます。

比較への影響

これらの要因により、float 値と double 値は丸め誤差が生じる可能性があります。これらのエラーは、等しいはずの 2 つの数値を比較するときに不一致を引き起こす可能性があります。指定された例では、1.1 の float 表現と double 表現には丸めによりわずかな変動があり、結果として f != d という直感に反する結果が生じます。

ベスト プラクティス

浮動小数点数間の直接の等価比較は避けてください。代わりに、値間の絶対的な差を評価し、それを許容可能なしきい値 (イプシロン) と比較することを選択します。

if (abs(x - y) < epsilon) { ... }
ログイン後にコピー

このアプローチは、浮動小数点演算に固有の誤差を考慮し、より信頼性の高い方法を提供します。 2 つの値が本質的に等しいかどうかを判断します。

以上が同じ値の float と double を比較すると false が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? Mar 12, 2025 pm 04:52 PM

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?

See all articles