如何使用if条件添加值

时间:2018-10-26 12:50:22

标签: c# if-statement double

我想总共获得三个值:

当所有值都不为null时,总计将成功计算,但是当一个或多个值为null

它返回错误:

  

“输入字符串的格式不正确”

下面是代码:

double TotalVar = double.Parse(ExScore.Tables[0].Rows[i]["CAT1"].ToString()) + 
double.Parse(ExScore.Tables[0].Rows[i]["CAT2"].ToString()) + 
double.Parse(ExScore.Tables[0].Rows[i]["CAT3"].ToString()) + 
double.Parse(ExScore.Tables[0].Rows[i]["EXAM"].ToString());

3 个答案:

答案 0 :(得分:2)

使用这样的本地函数来安全地解析数据:

double Parse(string data)
{
    return double.TryParse(data, NumberStyles.AllowDecimalPoint, 
        CultureInfo.InvariantCulture, out double val) ? val : 0;
}

答案 1 :(得分:0)

if(ExScore == null || ExScore.Tables[0] == null ||
  IsNullOrEmpty(ExScore.Tables[0].Rows[i]["CAT1"]) || 
  IsNullOrEmpty(ExScore.Tables[0].Rows[i]["CAT2"]) || 
  IsNullOrEmpty(ExScore.Tables[0].Rows[i]["CAT3"]) || 
  IsNullOrEmpty(ExScore.Tables[0].Rows[i]["EXAM"])
)
{
    //throw exception
    //set value by default
}

//calcul normally

public bool IsNullOrEmpty(object value)
{
    return value == null || string.IsNullOrEmpty(value.ToString());
}

答案 2 :(得分:0)

创建一个控制台应用程序并在下面测试该应用程序。您需要的所有内容都在下面的代码中。注意:在没有最小限度的错误处理的情况下,直接转换字符串是很不好的,否则您可能会/也将遇到“。”问题。或这些转换中的“,”小数点分隔符。 -不同的区域使用不同的小数点分隔符,这会影响结果的质量。

   class Program
{
    static void Main(string[] args)
    {
        //SumValues(
        //ExScore.Tables[0].Rows[i]["CAT2"].ToString(),
        //ExScore.Tables[0].Rows[i]["CAT3"].ToString(),
        //ExScore.Tables[0].Rows[i]["EXAM"].ToString()
        //);

       Console.WriteLine(SumValues("100,32", "100,08", "100,10",null));
       Console.WriteLine(SumValues("abcsdf", "ba123", "100,10", null));
       Console.WriteLine(SumValues("100,32", "100,08", "100,10", null));
       Console.ReadLine();
    }


    //simple function that will try to sum any number of strings you pass
    public static double SumValues(params string[] values)
    {
        double sum=0;

        foreach (var item in values)
        {
            //if the string is null, empty or white space, proceed to the next iteration in the loop
            if (string.IsNullOrWhiteSpace(item))
                continue;

            if (IsNumeric(item))
                sum += double.Parse(item);
        }

        return sum;
    }

    //Minimal 'error handling' function to avoid exceptions parsing strings
    public static bool IsNumeric(string s)
    {
        double output;
        return double.TryParse(s, out output);
    }
}