我的应用中有以下代码行:
packsize.CompanyPrice = (decimal)Reader["CompanyPrice"];
但它引发了错误when casting from a number, the value must be a number less than infinity
我已将数据库数据类型设置为double,但在我的应用中它是十进制的。它会导致这个问题吗?
或者我在这里遗漏了什么?
答案 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