私は、Entity FrameworkによってDecimal
にマップされたFLOAT(126)
列を持っています。 1つのケースを除いて、書き込みと読み取りの両方で機能します。Entity Framework 4を使用してOracleデータベースから最大精度値を読み取る方法は?
Iのような高精度の値を書き込む場合:私はそれを読むことができない
1m/3m = 0.33333333333333333333333333333333
を、フレームワークはArithmeticOverflowException
をスロー。
どのように解決するには?私の一時的な解決策は、数字を小数点以下6桁に丸めてから挿入することです。しかし、完全精度が必要な場合はどうすればよいでしょうか?
さて、私は38桁の部分を削除しました。問題は、値がデータベースに挿入される前のDecimalであった場合、それを取得できない理由は何ですか?私は余分な精度が最初に小数点にキャストされたときに削除されたと思います。 –
浮動小数点数の表現方法と関係があります。私はあなたに私の持っていたトップの正しい例を与えることはできませんが、3.8を変換してフロートに格納するのは、基本的には有効数字が足りなくなるまで実際に3.7999999999999999999999999として保存する必要があります。インターネット上のフロート表現については、非常に詳細な説明がたくさんあります。フロートのためのGoogleだけで、多くのヒットがありますが、読むのは簡単ではありません。 –