[解決済み] 浮動小数点値が0と等しいかどうかをチェックするのは安全ですか?
2022-12-13 01:24:05
質問
double型やdecimal型の値同士の等式は通常当てにならないことは知っていますが、0は特殊なケースなのでしょうか?
0.00000000000001と0.00000000000002の間の不正確さは理解できますが、0自体はただの無なので混乱するのはかなり難しいようです。 何もないところで不正確であれば、それはもう何もないのではありません。
でも、この話題はよく知らないので、私が言うことではありません。
double x = 0.0;
return (x == 0.0) ? true : false;
これは常に真を返すのでしょうか?
どのように解決するのですか?
それは
安全
を返すと予想します。
true
を返すと期待できます。
0.0
という値を持つ場合のみです (元のコードでは、もちろんそうなっています)。これは
==
演算子のセマンティクスと一致しています。
a == b
は " を意味する。
a
とは
b
となります。
それは 安全ではない (それは 正しくない というのは、純粋な数学で同じ計算をした結果がゼロであれば、倍精度(あるいはより一般的には浮動小数点)算術でもゼロになると期待することはできないからです。これは、計算が地に落ちたとき、浮動小数点精度の誤差が現れるためで、数学の実数演算には存在しない概念です。
関連
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] 除算を強制的に浮動小数点にするにはどうしたらいいですか?除算は0に切り捨てられ続けますか?
-
[解決済み] JavaScriptで浮動小数点数の精度を扱うには?
-
[解決済み] Pythonでfloatをほぼ等しく比較する最良の方法は何ですか?
-
[解決済み】浮動小数点値の比較はどのくらい危険か?
-
[解決済み】bashで浮動小数点演算を使用するには?
-
[解決済み】androidのリソース/値に浮動小数点値を追加する。
-
[解決済み] C#で浮動小数点演算は整合性が取れているのか?可能なのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。