2

アプリに次のコード行があります。

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

しかし、それはエラーを発生させますwhen casting from a number, the value must be a number less than infinity

データベースのデータ型を double に設定しましたが、アプリでは 10 進数です。それはこの問題を引き起こしますか?

または、ここに何かがありませんか??

4

3 に答える 3

1

DBNull値をキャストしようとしているため、エラーが発生していると思います

Reader["CompanyPrice"]のチェックを追加できる場合は良いDBNull

if(Reader["CompanyPrice"] != DBNull.Value)
{
}

このようなものはあなたの問題を再現することができます

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

編集

ダブルのボックス表現の場合は、ダブルにキャストバックしてから、10進数にキャストする必要があります。

于 2012-08-13T10:39:29.897 に答える
0

Reader["CompanyPrice"] は、値が無限大または推測している NaN を返します。int.MaxValue または decimal.MaxValue に設定します

于 2012-08-13T10:31:25.047 に答える
0

32 ビット整数のキャスト (10 進数) の前に、Reader["CompanyPrice"] の値をクランプしてみてください。最小値は -2147483648、最大値は 2147483647 です。

于 2012-08-13T10:32:57.927 に答える