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

问题描述 投票:2回答:3

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

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

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

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

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

c#
3个回答
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,然后将转换为decimal。


0
投票

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


0
投票

在为32位int转换(十进制)之前尝试夹紧Reader [“CompanyPrice”]的值,最小值为-2147483648,最大值为2147483647

© www.soinside.com 2019 - 2024. All rights reserved.