转换十进制sql类型为.net浮点类型

时间:2012-10-02 14:31:30

标签: c# sql-server type-conversion sqldatatypes

我在sql中有十进制(18,2)数据,我在.net端设置了float类的属性。当我选择对象.net时会返回如下错误:

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'.

你有什么建议吗?

4 个答案:

答案 0 :(得分:2)

在您的.NET代码中,对于十进制(18,2),双精度型或十进制型。

有关从SQL到.NET类型的交叉引用,请参阅here

现在,如果您的十进制列可以为null,请确保使用可为空的十进制或

public decimal? DiscountRate { get; set; }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用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

答案 3 :(得分:0)

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

以下是对此问题的广泛讨论:decimal vs. double