1. ホーム
  2. c#

[解決済み] sql serverでdoubleを表すのは何ですか?

2022-03-15 03:32:40

質問

の中にいくつかのプロパティがあります。 C# である。 double で、これを SQL Server のテーブルに格納したいのですが、SQL Server のテーブルには double という型がありますが、何を使うのが一番いいのでしょうか? decimal または float ?

これは緯度と経度の値を格納するものなので、最も正確な精度が必要です。

これまでのご回答ありがとうございました。

解決方法は?

float

あるいは、古風にいくなら。

real

float(53)も使えますが、意味はfloatと同じです。

("real" は float(24) に相当し、float/float(53) には相当しない)。

decimal(x,y) SQL Server のタイプは、次のような場合に使用します。 正確 浮動小数点数ではなく、10進数です(近似値になる可能性があります)。これは、C#の"decimal"データ型とは対照的で、128ビット浮動小数点数のようなものです。

MSSQLの フロート 型は、64 ビットの ダブル 型を.NETで使用することができます。(2011年の私の最初の回答では、仮数に若干の違いがあるかもしれないと言いましたが、2020年にこれをテストしたところ、非常に小さい数と非常に大きい数のバイナリ表現において100%の互換性があるようです。 https://dotnetfiddle.net/wLX5Ox をご覧ください)。

さらに混乱させるのは、C#の "float" は32ビットしかないので、SQLでは float/float(53) よりもMSSQLの real/float(24) 型に相当することでしょう。

具体的な使用例では... 緯度・経度を1m程度の精度で表現するには、小数点以下5桁、度数は小数点以下3桁まででよい。MSSQLではfloat(24)かdecimal(8,5)が最適で、C#ではfloatを使えば十分なので、doubleは必要ないのです。C#でfloatを使用すれば十分で、doubleは必要ありません。実際、ユーザーは、重要でない多くの桁が一緒に来るよりも、小数点以下5桁に丸めることに感謝するでしょう。