0

私は VisualStudio 側に Double 型の値を持っています。

この値を MSSQL 2008 に浮動小数点型で格納する必要があります。

問題は、私の値の精度がポイントの後に 17 桁であることです。

SQL 側では、最後の数桁が切り捨てられて丸められます。

値をそのまま保持するように SQL サーバーを作成する方法 (つまり、最後の桁を変更しないようにする方法) はありますか?

前もって感謝します!

4

4 に答える 4

3

float の代わりに Decimal データ型を使用します。

これが例です

DECIMAL(30, 17)

30 = 10 進数の最大合計数

17 = 小数点の右側に格納できる 10 進数の最大桁数。

詳細はこちら

http://msdn.microsoft.com/en-us/library/aa258832(v=sql.80).aspx

于 2013-01-11T11:00:13.083 に答える
2

.NetDoubleおよびMSSQLサーバーfloatは、おおよその数値データ型です。

それらは「実数」を保存する効率的な方法を提供します。内部的には、底(マチッサ)と乗数(指数)の2つの正確な2進数として格納されます。精度は、これら2つの正確な2進数、特に仮数の相対的なサイズによって異なります。これらの浮動小数点数を使用する操作は、最新のプロセッサ、特にGPUで最適化されています。

数値の小さい方の端には、範囲内のすべての実数の2進値はありません。数値を格納するために使用されるそれぞれの比率が異なる場合、これらのギャップはインターレースされ、比率間の数値を変換する小さな丸め誤差が発生します。浮動小数点数を使用すると、それがそのままになります。浮動小数点数を使用して自然データを表す場合、どちらの方法でも5分の1はあまり違いはありません。

本当に特別な精度が必要な場合は、MSSQLdecimalまたはnumeric.NetDecimalタイプを使用する必要があります。ただし、フローティングポイントよりも多くのスペースを使用し、パフォーマンスが低下します。

于 2013-01-11T11:20:34.640 に答える
1

FLOATは正確ではありません。精度を高めるには、DB にDECIMAL / NUMERICとして格納する必要があります。

于 2013-01-11T10:58:38.393 に答える
1

float は近似データ型であるため、FLOAT 型から精度を得ることはできません。

浮動小数点数値データで使用する概数データ型。浮動小数点データは概算です。したがって、データ型の範囲内のすべての値を正確に表現できるわけではありません

decimalを使用できます。

于 2013-01-11T11:01:35.430 に答える