关于c#:将十进制sql类型转换为.net float类型

Convertion decimal sql type to .net float type

有小数点(18.2)的数据,在SQL中看到"鸭浮在.net类性质的大学。当选择"对象.net归来的这样的错误:

1
The 'DiscountRate' property on 'Product' could not be set to a 'Decimal' value. You must set this property to a non-null value of type 'Single'.

你有建议吗?


在.NET代码中,键入double或decimal作为decimal(18,2)。

有关从SQL到.NET类型的交叉引用,请参见此处。

现在,如果decimal列可以为空,请确保使用可以为空的decimal或

1
public decimal? DiscountRate { get; set; }

您应该将属性更改为decimal。它使转换更容易,并保护您不受floatdouble附带的舍入错误的影响。

这里有一个关于这个问题的广泛讨论:十进制与double


您可以使用Decimal Type

链接:http://msdn.microsoft.com/en-us/library/system.decimal.aspx

您可以阅读Specifying Parameter Data Types section

链接:http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx


我建议您要么将.NET类中的属性更改为十进制类型,要么在设置时显式转换为float。虽然使用十进制类型在没有任何上下文的情况下似乎更正确,但您使用的类型实际上取决于您的代码。