5

SQL Server 2012にメトリックデータ(メートル、キロメートル、平方メートル)を保存しようとしています。

使用するのに最適なデータ型は何ですか?float(C#:double)、decimal(C#:decimal)またはgeometry?または何か違う?

4

3 に答える 3

4

decimalデータに適切な精度のa 、またはint適切な場合はタイプのいずれか

于 2012-09-25T10:48:51.817 に答える
3

それは完全にアプリケーションとそれに必要な精度に依存します。

アーキテクチャについて話している場合、精度のニーズは比較的限られておりC# 32-bit float、長い道のりが必要になります。SQLでは、これはに変換さfloat(24)れ、データベースタイプとも呼ばれますreal。このSQLDBタイプでは、エントリごとに4バイトのストレージが必要です。

代わりに、地球の表面上のポイントに対処する場合は、はるかに高い精度が必要です。ここでaC# doubleが適切であり、これはaSQL float(53)またはちょうどに対応しfloatます。このSQLDBタイプは8バイトのストレージを必要とし、必要な場合、またはアプリケーションが小さく、ディスク/メモリの使用量が問題にならない場合にのみ使用する必要があります。

これSQL Decimalは実際のSQLDBの良い代替手段になる可能性がありますが、2つの欠点があります。

  1. C# Decimalこれは、財務上の使用と丸め誤差を防ぐために設計されたタイプであるに対応します。この設計では、三角法などで使用すると、C#Decimal型がfloat / doubleよりも遅くなります。もちろん、これをコード内で前後にキャストすることもできますが、これはIMOの最も簡単なアプローチではありません。

    「10進値タイプは、多数の重要な整数および小数桁を必要とし、丸め誤差がない財務計算に適しています。」-MSDN :10進構造

  2. SQL DBタイプDecimalでは、エントリごとに5〜9バイトのストレージが必要です(使用する精度によって異なります)。これは、float(x)の代替手段よりも大きくなります。
だから、あなたのニーズに応じてそれを使用してください。あなたのコメントであなたはそれが不動産についてであると述べているので、私は正確に4バイトで直接に変換されるfloat(24)(別名)を選びます。参照:floatおよびreal(Transact-SQL)realC# float

最後に、.NetとSQLの間でさまざまなタイプを変換するための役立つリソースを次に示します。SqlDbType列挙

于 2012-09-25T10:50:55.620 に答える
1


floatまたはdoubleは、正確でないデータ型(5.0 == 5.0は丸めの問題によりfalseになる可能性があります)および
Decimalは正確なデータ型(5.0 == 5.0は常にtrue)
およびGeometry / Geography(easy言った)は地図上の場所のためのものです。

地理はバイナリデータであり、投影に関する情報(ここではすべてマップに関する情報が含まれます)と小数は技術的にはフロートほど扱いにくいため、フロートの計算は3つのうちで高速である必要があります。

于 2012-09-25T10:50:13.463 に答える