.NET 中的 SQL 十进制等效项

Posted

技术标签:

【中文标题】.NET 中的 SQL 十进制等效项【英文标题】:SQL decimal equivalent in .NET 【发布时间】:2011-10-06 12:55:10 【问题描述】:

.NET 中的 SQL (MS SQL Server) Decimal 等价物是什么?

应该是DoubleDecimal 还是Float(VB.NET 中的Single)?

【问题讨论】:

Decimal 因为Double 可能会降低精度... @Yahia 根据使用情况,十进制可能会丢失精度。主要区别在于 Decimal 是以 10 为底,而 Double 是二进制。 Granted Decimal 通常用于货币工作,因此精度很少成为问题。 @DavidHeffernan - 实际上,如果源是 DECIMAL,则转换为 FLOAT 可能会丢失精度。 @Dems 如果源是小数点。它会在这里。公平的警察。我只想指出的是,十进制本身并不比浮点具有更高的精度。 【参考方案1】:

.NET 中没有 精确 等效类型,因为 SQL 的小数类型是定点类型,而 .NET 的 System.Decimal 类型是浮点(小数)点类型。

但是,System.Decimal 绝对是最接近的匹配项,通常应该是用来表示存储在 SQL 数据库中的小数列中的值。

【讨论】:

Decimal 但是,由于(超过)精度,它不是“常见”类型的四个浮点值。就我个人而言,我更经常使用 Double ......但为了映射相应的值......我想我会使用 Decimals ...... @serhio:实际上,我认为大多数商业应用程序可能应该比double 更频繁地使用decimal。精度并不重要——它是数据的性质和类型的 base。如果您要存储人造数量,那么十进制可能是正确的方法。对于高度和宽度等“自然”值,double 更合适。 @Jonskeet,你确定吗?本文与你不同:gregs-blog.com/2007/12/10/dot-net-decimal-type-vs-float-type @Johan:文章的哪一部分与我的陈述不同? 我不久前查看了 .net 十进制并找到了这个表:***.com/questions/7348593/… 我现在很遗憾没有提供指向我复制粘贴该表的 MS 文章的链接。它说你可以像这样声明小数:Decimal(Int32)【参考方案2】:

使用Decimal,如this table所示。

【讨论】:

以上是关于.NET 中的 SQL 十进制等效项的主要内容,如果未能解决你的问题,请参考以下文章

用于 String.format() 的 Java 中 %ld 的 C++ 等效项

.Net 中的 DLast 等效项

jQuery 中的 C++ memset() 等效项

SQL Server 'Resume Next' 等效项

标准 asp.NET 中的 OnActionExecuting 等效项?

SQL Server 中的 DISTINCTROW 等效项