gpt4 book ai didi

.NET 十进制 = SQL 中的什么?

转载 作者:行者123 更新时间:2023-12-03 14:36:30 26 4
gpt4 key购买 nike

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

我们希望以最多 9 位小数精度存储十进制数,并希望避免前端的舍入错误等。

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

我们希望将其向下传递到数据库,并希望在通过层移动数据时将转换问题降至最低。有什么建议?

最佳答案

所以我们在 SQL Server 上做了一些测试。它看起来像 sql 类型 decimal不能完全存储任何 .net 十进制。

SQL Server 最多可以存储一个数字 38 decimal digits long .那是小数点左边和右边的位数的总和。您设置了一个“比例”,它告诉 SQL 服务器要为小数点右侧的数字保留多少个小数位数。如果您设置了一个比例,那么这会减少小数点左侧的位数。 (精度 - 小数位数 = 小数点左边的小数位数)

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

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

decimal(38, 28)

这会让你左边有 10 位数字,右边有 28 位数字。因此,无法表示大于 9999999999 的任何数字,但在进行货币类型交易时不会丢失精度。

另一方面,如果您的数字非常大,您可以使用以下声明存储它们:
decimal(38, 9)

这将让您存储 .net Decimal 可以存储的最大数字,即 29 位长。它只会给您留下 8 位十进制数字的精度。

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

关于.NET 十进制 = SQL 中的什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com