.NET 中的 SQL 十进制等效项
Posted
技术标签:
【中文标题】.NET 中的 SQL 十进制等效项【英文标题】:SQL decimal equivalent in .NET 【发布时间】:2011-10-06 12:55:10 【问题描述】:.NET 中的 SQL (MS SQL Server) Decimal
等价物是什么?
应该是Double
、Decimal
还是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++ 等效项