C#中SQL Server的Numeric的等效数据类型是什么

时间:2011-07-21 06:03:11

标签: c# sql-server-2005

在SQL Server中,我们可以编写数据AS Numeric(15,10) ..在C#中它的等价物是什么?

我知道Numeric的等价物是Decimal但是如何表示Numeric(15,10)

3 个答案:

答案 0 :(得分:62)

没有直接的等价物,因为没有内置的.NET类型允许您明确指定精度/比例,据我所知。没有固定的 - 点类型,如NUMERIC。

decimaldouble是.NET中常见的浮点类型,decimal实现decimal floating point(如T-SQL中的NUMERIC)和double实现binary floating point行为(如T-SQL中的FLOAT和REAL)。 (还有float,这是一个较小的二进制浮点类型。)

您应该根据您要表示的值来选择decimaldouble - 我通常认为“人为”,人为价值(特别是金钱)适合{ {1}}以及适用于decimal的连续自然值(例如物理维度)。

答案 1 :(得分:11)

尝试查看this site作为数据类型映射的指南。就精确度和长度而言,您可以使用format specifiers

来控制自己

答案 2 :(得分:0)

根据两个问题,有两个答案:

1)什么是允许您指定精度和比例的东西。没有。这似乎是你的问题,但以防万一:

2)什么是允许您指定十进制浮点数完全的东西。这确实是十进制类型 - 但该点是内部的,并根据输入数量设置为2 ^ 32个位置之一。不知道为什么,但只有28个值可以工作,或者2 ^ 5 - 4 ..

所以即使.Net允许Decimal看起来像一个浮点数,它在封面下是非常不同的,并且与SQLServer的Decimal相匹配。任何不是2个值的明显幂的总和的是使用正常二进制浮点的估计。这意味着即使是数字0.1这样的东西也已经失去了精度。但不是Decimal类型。