少了一些我的代碼在我的應用程序下面一行:值必須大於無窮
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
我已經設置數據庫數據類型爲雙的錯誤,但我應用程序是十進制的。它會導致這個問題嗎?
或者我缺少這裏的東西?
閱讀器[「CompanyPrice」]返回一個值是無窮大或我猜測NaN。其設置爲int.MaxValue或decimal.MaxValue
我已經將數據庫數據類型設置爲double,但在我的應用程序中它是十進制的。它會導致這個問題嗎? – 2012-08-13 10:54:04
如果數據來自數據庫,請使用double.TryParse。不要直接從字符串轉換爲小數。 – 2012-08-13 11:08:52
嘗試鑄造之前(十進制) 爲32位int最小值爲-2147483648,最大爲2147483647
十進制最大值爲79,228,162,514,264,337,593,543,950,335 ...'decimal「不是'Int32' – 2012-08-13 10:42:39
我夾緊閱讀器[「CompanyPrice」]的值想你想投一個DBNull的價值,因此你所得到的錯誤
好,如果你能爲Reader["CompanyPrice"]
添加一個檢查爲DBNull
if(Reader["CompanyPrice"] != DBNull.Value)
{
}
這樣的事情可以瑞普領袖您的問題
object obj = DBNull.Value;
decimal somdec = (decimal)obj; // Specified cast is not valid
編輯
如果其雙重的裝箱表示,那麼你需要將它轉換回double,然後做演員到小數。
我已經將數據庫數據類型設置爲double,但在我的應用程序中它是十進制的。它會導致這個問題嗎? – 2012-08-13 10:57:26
是的,它可能是問題,如果它已經雙 - >對象,所以當你回來時你需要得到雙精度,然後小數點,這是最好的[這裏解釋](http://blogs.msdn.com/b /ericlippert/archive/2009/03/19/representation-and-identity.aspx) – V4Vendetta 2012-08-13 11:04:46
那麼,「CompanyPrice」的傳入值是什麼?請注意,'decimal'的最大值爲79,228,162,514,264,337,593,543,950,335(這是公平的,非常巨大......取決於您使用的是哪種貨幣) – 2012-08-13 10:30:57
在投射到''公司價格'之前,'Reader [「CompanyPrice」]的內容是什麼? decimal'? – 2012-08-13 10:31:26
現在它的值爲0. – 2012-08-13 10:32:38