2012-04-24 16 views
13

私はasp.net mvc 3 Webアプリケーションでデータベース優先アプローチを使用しています。Entity Frameworkはfloatデータ型をdouble型にマッピングします

私はタイプfloatの2列(min & max)が含まれていResultsと呼ばれるテーブルを持っていますが、私はモデルクラスに既存のデータベースをマッピングするためにEntity Frameworkのを使用する場合、その後、EFはmin & maxのデータ型とクラスResultsを作成しますexsitingデータベースで指定されているfloatの代わりにdoubleというフィールドを使用します。

この現象はなぜ起こりますか?それは何か問題を引き起こすでしょうか?

答えて

16

これは正常な動作です(MSDN)。

SQLサーバーのrealデータ型でさえ、doubleにマップされていますが、floatでも間違いなく十分です。

しかし、タイプ名はここで非常に混乱しています。実際にはfloat (t-SQL)は、double (.Net)と同じです。精度は15桁で、範囲はマイナス1.79769313486232e308からプラス1.79769313486232e308です。

1

私はあなたの問題がこれと同じであるかどうかわからない:

http://forums.asp.net/p/1606916/4100117.aspx

しかし、任意の問題を引き起こす必要があり、それはこのようには思えません。あなたは、倍数から浮動小数点数に行くあなたの数値で精度を失う可能性がありますが、余分な数字が必要な場合を除き、それはまだ動作するはずです。

+0

なぜ私は2倍のfloadに変更すると、私は1.123456789のようなものを挿入しようとしましたが、データベースに正しく保存されました... –

+0

floatの精度が7一方、倍精度は15〜16の精度を持ちます。あなたが必要とされていた何らかの数学計算をしていない限り、あなたはそのタイプの精度が必要であるとは考えにくいでしょう。 http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/678hzkk9(v=vs) .100).aspx これらの2つのリンクは、float型とdouble型です。 –

関連する問題