2011-10-06 60 views
6

什么是SQL(MS SQL Server)的Decimal相当于.NETSQL十进制等效于.NET

它应该是DoubleDecimalFloatSingle在VB.NET中)?

+0

'Decimal'既然'Double'可能会失去精度... – Yahia

+0

@Yahia根据用法,Decimal可能会失去精度。主要区别在于Decimal是基数10,Double是二进制。授予的十进制通常用于货币工作,因此精度很少成为问题。 –

+0

@DavidHeffernan - 实际上,如果源代码是DECIMAL,转换为FLOAT就是您失去精确度的风险。 – MatBailie

回答

15

有在.NET中没有确切同等类型,如SQL的十进制类型是固定点,而.NET的System.Decimal类型为浮动(十进制)点类型。

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

+0

然而,由于(超出)精度,十进制不是“普通”类型的四个浮点值。我个人更经常使用Double ...但是为了映射相应的值...我想我会用Decimals ... – serhio

+2

@serhio:其实我认为大多数商业应用程序应该比'double '。精度并不重要 - 它是数据的性质和类型的* base *。如果你存储人造数量,小数可能是正确的方法。对于诸如高度和宽度的“自然”值,“double”更合适。 –

+0

@Jonskeet,你确定吗?本文与您不同:http://gregs-blog.com/2007/12/10/dot-net-decimal-type-vs-float-type/ – Johan