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

C#铸造/不铸造时出现无限值错误

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))