我的应用程序中有以下代码行:
packsize.CompanyPrice = (decimal)Reader["CompanyPrice"];
但它会引发错误when casting from a number, the value must be a number less than infinity
我已将数据库数据类型设置为双精度,但在我的应用程序中它是十进制的。它会导致这个问题吗?
或者我在这里遗漏了什么?
我的应用程序中有以下代码行:
packsize.CompanyPrice = (decimal)Reader["CompanyPrice"];
但它会引发错误when casting from a number, the value must be a number less than infinity
我已将数据库数据类型设置为双精度,但在我的应用程序中它是十进制的。它会导致这个问题吗?
或者我在这里遗漏了什么?
我认为您正在尝试强制转换 DBNull 值,因此您遇到了错误
Reader["CompanyPrice"]
很好,如果您可以添加检查DBNull
if(Reader["CompanyPrice"] != DBNull.Value)
{
}
这样的事情可以重现您的问题
object obj = DBNull.Value;
decimal somdec = (decimal)obj; // Specified cast is not valid
编辑
如果它是双精度的盒装表示,那么您需要将其转换回双精度,然后将其转换为十进制。
Reader["CompanyPrice"] 返回的值是无穷大或我猜的 NaN。将其设置为 int.MaxValue 或 decimal.MaxValue
在为 32 位 int 转换(十进制)之前尝试钳制 Reader["CompanyPrice"] 的值,最小值为 -2147483648,最大值为 2147483647