value必须是小于无穷大的数字

时间:2012-08-13 10:28:45

标签: c#

我的应用中有以下代码行:

packsize.CompanyPrice = (decimal)Reader["CompanyPrice"];

但它引发了错误when casting from a number, the value must be a number less than infinity

我已将数据库数据类型设置为double,但在我的应用中它是十进制的。它会导致这个问题吗?

或者我在这里遗漏了什么?

3 个答案:

答案 0 :(得分:1)

我认为您正在尝试转换DBNull值,因此您收到错误

如果您可以为Reader["CompanyPrice"]

添加DBNull支票,那就太好了
if(Reader["CompanyPrice"] != DBNull.Value)
{
}

这样的事情可以重现你的问题

object obj = DBNull.Value;
decimal somdec = (decimal)obj; // Specified cast is not valid

修改

如果它是double的盒装表示,那么你需要将它强制转换为double,然后将转换为十进制。

答案 1 :(得分:0)

Reader [“CompanyPrice”]返回的值是无穷大或NaN我猜。将其设置为int.MaxValue或decimal.MaxValue

答案 2 :(得分:0)

在投射前尝试钳制Reader [“CompanyPrice”]的值(十进制) 对于32位int,最小值为-2147483648,最大值为2147483647