-1

floatのような値を挿入したい場合400.79、自動的400.790008544922に NHibernate に挿入されます。では、なぜ間違った値を挿入するのでしょうか?

4

1 に答える 1

2

コードまたは基になるデータテーブルへの NHibernate マッピングのいずれかで、float が double を通過することを期待しています。

LINQPad でこれを試してみると:

float f = 400.79F;
double d = f;
d.Dump();

出力は次のとおりです。400,790008544922

.Net 型から SqlServer データ型への NHibernate のマッピングについて説明しているこのブログに基づいて、型 REAL (FLOAT(24) の同義語) のデータ列のみが float (Single) にマップされ、他の非整数データ型は double または decimal にマップされます。

于 2013-02-02T10:24:06.093 に答える