2011-07-08 3 views
0

「実数型」フィールドにいくつかの数値を格納します。SQLサーバーの実フィールドは、自分の数値を通常のフォーマットに変換します。

ADO.netを使用しているmy c#アプリケーションから値を挿入/読み込みます。 Server Management Studioでデータを照会すると、自分の数値が次のような科学的な標準形式に変換されていることがわかります。2,211221E + 07。私はこれを行うanythigを設定していない、すべてがデフォルトです。

この現象を回避するにはどうすればよいですか?

MS SQL Server 2008 Expressの/ネット4/VS2010

+0

例を挙げることができますか(2,211221E + 07は元来何を挿入しましたか)? REALを意図的に使用していますか? (通常はDECIMAL/NUMERICが良い選択です。) –

答えて

4

それは科学的なフォーマットにあなたの実数(IEEE浮動小数点)を変換しません:それは、SSMSでどのように表示さそれらのです。ここではどのようにADO.NetマップデータタイプのSQL Serverと.NETの世界の間です:http://msdn.microsoft.com/en-us/library/cc716729.aspx

浮動小数点型の場合、SQL Serverは、ISOデータ型Nは、仮数部の大きさであるfloat(nは)を実装しますビット数(1〜53を含む)。 realfloat(24)の同義語です。 floatfloat(53)の同義語です。

浮動小数点型の列は、仮数が1-24ビットのものがSystem.Singleにマップされています。 24ビット以上の仮数を持つものはSystem.Doubleにマッピングされます。

SQL Serverのmoneysmallmoneyのデータ型は、お金とはほとんど関係ありません。これらは固定小数点以下の小数点以下4桁の精度(単位の1/10000)です。 Ado.NetはmoneysmallmoneySystem.Decimalにマップし、System.Decimalmoneyにマップします(smallmoneyへのマッピングはありません)。この変換には、インピーダンスの不一致がありますが、10進浮動小数点形式のSystem.Decimalがあります。 SQL Serverのデータ型moneyから/への変換は、精度の

  • 損失につながることができます。System.Decimalの値が小数点以下4桁を超える場合、余分な数字は失われます。
  • 精度の向上。 `System.Decimalの値が小数点以下4桁未満の場合、moneyへの変換では、小数点の右側に余分な数字(試行ゼロ)の形で精度が得られます。その余分な精度は、SQL Serverから読み取ったときに維持されます。
+0

Thx Nicholas。 SQLで実数を使用しましたが、この動作は見られませんでした。今、私はそれを理解しています。 – Tom

関連する問題