SQL Server で double を表すものは何ですか? 質問する

SQL Server で double を表すものは何ですか? 質問する

いくつかのプロパティがありC#doubleこれらを SQL Server のテーブルに格納したいのですが、型がないことに気づきましたdouble。何を使用するのが最適ですdecimalfloat?

これには緯度と経度の値が保存されるため、最も正確な精度が必要です。

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

ベストアンサー1

float

あるいは昔ながらの方法を試したい場合:

real

float(53)も使用できますが、これはfloatと同じ意味になります。

("real"はfloat(24)と同等であり、float/float(53)と同等ではありません。)

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

MSSQLのfloat型は、.NETの64ビットdouble型に相当します。(2011年の私の最初の回答では仮数部に若干の違いがある可能性があると述べていましたが、2020年にこれをテストしたところ、非常に小さい数と非常に大きい数のバイナリ表現で100%互換性があるようです。https://dotnetfiddle.net/wLX5Ox私のテスト用です。

さらに混乱を招くのは、C# の「float」は 32 ビットのみであるため、SQL では float/float(53) 型ではなく、MSSQL の real/float(24) 型に相当します。

具体的な使用例では、緯度と経度を約 1 メートルの精度で表すために必要なのは小数点以下の 5 桁だけで、度数には小数点前の 3 桁までしか必要ありません。MSSQL では float(24) または 10 進数 (8,5) がニーズに最も適しており、C# では float を使用すれば十分で、double は必要ありません。実際、ユーザーは、意味のない数字が大量に続くよりも、小数点以下 5 桁に丸められたことに感謝するでしょう。

おすすめ記事