在SQL Server中,我们可以编写数据AS Numeric(15,10)
..在C#中它的等价物是什么?
我知道Numeric
的等价物是Decimal
但是如何表示Numeric(15,10)
?
答案 0 :(得分:62)
没有直接的等价物,因为没有内置的.NET类型允许您明确指定精度/比例,据我所知。没有固定的 - 点类型,如NUMERIC。
decimal
和double
是.NET中常见的浮点类型,decimal
实现decimal floating point(如T-SQL中的NUMERIC)和double
实现binary floating point行为(如T-SQL中的FLOAT和REAL)。 (还有float
,这是一个较小的二进制浮点类型。)
您应该根据您要表示的值来选择decimal
和double
- 我通常认为“人为”,人为价值(特别是金钱)适合{ {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类型。