0

我在 VisualStudio 端有 Double 类型的值。

我需要将此值以浮点列类型存储在 MSSQL 2008 中。

问题是我的值的精度是该点后的十七位数字,

在 SQL 端,最后几位数字被剪切和四舍五入。

知道如何使 SQL 服务器保持原样(即不更改最后一位)吗?

先感谢您!

4

4 回答 4

3

使用小数数据类型而不是浮点数。

这是一个例子

DECIMAL(30, 17)

30 = 小数位数的最大总数

17 = 可以存储在小数点右侧的最大小数位数。

更多关于这个

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

于 2013-01-11T11:00:13.083 回答
2

.NetDouble和 MSSQL 服务器float是近似数值数据类型。

它们提供了一种存储“真实”数字的有效方式。在内部,它们被存储为两个精确的二进制数,基数(matissa)和乘数(指数)。他们的精度根据这两个精确二进制数的相对大小而变化,尤其是尾数。使用这些浮点数的操作在现代处理器上进行了优化,尤其是 GPU。

At the small end of the number there is not a binary value for every real number in the range. When the respective ratios used to store the numbers differ, these gaps are interlaced and you get small rounding errors converting the numbers between ratios. With floating point numbers thats just the way it is. When floating point numbers are used to represent natural data a quintillionth either way doesn't make much difference.

If you really need the extra precision you should use the MSSQL decimal or numeric and the .Net Decimal type. However, they use more space and have lower performance than floating points.

于 2013-01-11T11:20:34.640 回答
1

FLOAT不准确。为了获得高精度,您应该将它们作为DECIMAL / NUMERIC存储在数据库中。

于 2013-01-11T10:58:38.393 回答
1

您不会从 FLOAT 类型中获得精度,因为 float 是一种近似数据类型

用于浮点数值数据的近似数数据类型。浮点数据是近似的;因此,并非数据类型范围内的所有值都可以准确表示

你可以使用十进制

于 2013-01-11T11:01:35.430 回答