たとえばx = 0.56657011973046234
、sqliteデータベースにdouble値を格納し、後でそれを取得すると、が取得されることに気付きましたy = 0.56657011973046201
。sqlite仕様と.NET仕様(どちらも私が最初に読んだことはありません:)によると、これは予想されたものであり、正常です。
私の問題は、高精度は重要ではありませんが、私のアプリは、ユーザーが基本的な3D情報を表すdoubleを入力/選択し、シミュレーションを実行して結果を見つけることを処理することです。そして、この入力はsqliteデータベースに保存して、後で再ロードして再実行することができます。
新しく作成された一連の入力は、保存および再ロードされると(double値が変更されたため)、同じ入力とは明らかに異なる方法でシミュレートされるため、混乱が生じます。これは論理的ですが、望ましくありません。
私はこれにどう対処するかについては完全には理解していませんが、それまでの間、ユーザー入力をsqliteデータベースに正確に格納できる値に制限/クランプしたいと思います。したがって、ユーザーが入力する0.56657011973046234
と、実際にはに変換され0.56657011973046201
ます。
しかし、実際にデータベースに格納してデータベースから取得する以外に、データベースに格納される値を数値で把握することはできませんでした。これは不格好なようです。これを行うための確立された方法はありますか?