.NET Decimal=SQL中的什么?

.NET Decimal=SQL中的什么?,.net,sql,.net,Sql,在.NET中,SQL中表示十进制的最佳数据类型是什么 我们希望存储精度高达9位的十进制数字,并希望避免前端的舍入错误等 在阅读有关数据类型的文章时,在.NET中使用Decimal似乎是最好的选择,因为您不会得到舍入错误,尽管它比Double慢一点 我们希望将这一点贯彻到数据库中,并希望在通过层移动数据时将转换问题降至最低。有什么建议吗?我会在SQL Server中使用十进制类型 如果您使用的是SQL Server,请看一下,这可能有助于数据类型映射。因此我们在SQL Server上进行了一些测试

在.NET中,SQL中表示十进制的最佳数据类型是什么

我们希望存储精度高达9位的十进制数字,并希望避免前端的舍入错误等

在阅读有关数据类型的文章时,在.NET中使用Decimal似乎是最好的选择,因为您不会得到舍入错误,尽管它比Double慢一点


我们希望将这一点贯彻到数据库中,并希望在通过层移动数据时将转换问题降至最低。有什么建议吗?

我会在SQL Server中使用十进制类型


如果您使用的是SQL Server,请看一下,这可能有助于数据类型映射。

因此我们在SQL Server上进行了一些测试。看起来sql类型
decimal
无法完全存储任何.net decimal

SQL Server最多可以存储一个数字。这是小数点左边和右边的数字总数。您设置了一个“刻度”,它告诉SQL server小数点右边的数字保留多少个小数位数。如果你设置了一个刻度,那么小数点左边的位数就会减少。(精度-刻度=小数点左侧的小数位数)

.NET最多可以表示小数点右侧的28位数字和左侧的29位数字。在SQL Server中,这要求精度为57,但可用的最大精度为38

因此,如果您希望获得尽可能高的精度,并且您的数字足够小,那么您可以这样做:

decimal(38, 28)
这将使您的左边有10个数字,右边有28个数字。因此,任何大于9999999999的数字都无法表示,但在进行货币类型的交易时,不会降低精度

另一方面,如果您的号码非常大,您可以将其与此声明一起存储:

decimal(38, 9)
这将允许您存储.net Decimal可以存储的最大数字,即29位数。它只会给你留下8位小数精度

如果这些听起来都不吸引人,那么您可以将它们存储为
varchar
。这将允许您保存任何.net十进制数,但不允许您在SQL中对它们执行任何计算