C#铸造/不铸造时出现无限值错误
本文关键字:无限 错误 铸造 | 更新日期: 2023-09-27 18:21:35
我想这会很容易,我想我错过了一些东西。
if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != null))
这段代码给了我一个错误,即当强制转换时不能是一个无限的数字。
我也试过:
if (((int)row.Cells["Pareto"].Value <= 50) && ((string)row.Cells["Pareto"].Value != null))
if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != ""))
任何帮助都会很棒!
我在visual studio 10中使用winforms,使用C#。
错误:"从数字进行强制转换时,值必须小于无穷大"
更多的代码,如果你感兴趣:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
//countpg
//countPg++;
pgtothold = Convert.ToSingle(row.Cells["Qty"].Value);
countPg += pgtothold;
//if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != null))
if ((Convert.ToDouble(row.Cells["Pareto"].Value)) && ((int)row.Cells["Pareto"].Value <= 50)
{
//top 50
//top++;
tempTop = Convert.ToSingle(row.Cells["Qty"].Value);
top += tempTop;
}
else
if (((int)row.Cells["Pareto"].Value > 50) && ((int)row.Cells["Pareto"].Value <= 100) && (row.Cells["Pareto"].Value != ""))
{
//50-100
tempMidt = Convert.ToSingle(row.Cells["Qty"].Value);
tmid += tempMidt;
}
else
if ((row.Cells["Pareto"].Value != null) && ((int)row.Cells["Pareto"].Value <= 50))
我想你想要这个。如果这个东西为null,它就不会计算AND的其余部分。
我建议您使用:
var data = System.Convert.ToInt32(row.Cells["Pareto"].Value);
if( data <=50 )
{
----
}
如果内容是DBNull(如果这是可以接受的),则它将失败为0,因此您的代码将更干净、更安全。
数据表的结果很可能是decimal类型。所以试试这个:
if (((decimal)row.Cells["Pareto"].Value <= 50.0m) && (row.Cells["Pareto"].Value != null))