使用Double.TryParse和if-else语句进行分区

时间:2013-03-07 19:36:44

标签: c# if-statement devexpress tryparse

我是C#编程的新手,我正在尝试在两个单元格值之间执行除法,并将结果放在Devexpress中的第三个单元格中。我的代码工作正常,除非分母是0。这给了我无限的输出。下面是我尝试使分母中的输出0为零。

private void xrTableCell40_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
   string value;
   bool Isnum;
   double holder;
   string zero;
   value = xrTableCell38.ToString();
   zero = 0.ToString(); 
   Isnum = double.TryParse(value, out holder);
   if(Isnum = true){
      if (holder > 0)
         DoWorkEventArgs}
      else{
         xrTableCell40.Text = zero;};
   holder = Convert.ToDouble(xrLabel135.Summary.GetResult()) / Convert.ToDouble(xrTableCell38.Summary.GetResult());
   string s = string.Format("{0:N2}", holder);
   xrTableCell40.Text = Convert.ToString(s);
}

如果分母为零,我需要输出为0.00,否则它应该执行除法并将结果放在xrTableCell40中。

5 个答案:

答案 0 :(得分:2)

基本三元运算符用法

double value = denom == 0 ? 0 : div/denom;

解释三元或?:运算符:

如果cond为真,则cond ? a : b评估为a。否则,cond ? a : b评估为b

希望您可以使用它来找到自己的解决方案。

答案 1 :(得分:1)

if(Isnum = true){ // Isnum = true is assignment, what you need is comparision
    if (holder > 0)
        DoWorkEventArgs}
else{
    xrTableCell40.Text = zero;}; // un-needed ; only statement terminates with semi-colon

应该是

        if(Isnum == true) // or (Isnum)
        {
            if (holder > 0)
                DoWorkEventArgs() // missing (), assuming that DoWorkEventArgs is a method call
        }
        else
        {
            xrTableCell40.Text = zero;
        }

答案 2 :(得分:1)

快速回答:

zero = string.Format("{0:N2}", 0);

这段代码肯定不会赢得任何风格点。一些快速提示:

  • 使用意味着什么的变量。我希望在某处看到“分母”作为变量。
  • 同时声明和使用变量 - 它将提高可读性。使用您的代码示例,请使用

    string value = xrTableCell38.ToString();

  • 稍微了解代码的流程和可读性

祝你好运,并记住练习是完美的。

答案 3 :(得分:1)

Roland ....,你的if语句中没有任何案例,其中Islam是真的,持有人是0

试试这个:

private void xrTableCell40_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
    {
        string value;
        bool Isnum;
        double holder;
        string zero;
        value = xrTableCell38.ToString();
        zero = 0.ToString(); 
        Isnum = double.TryParse(value, out holder);
            if(Isnum != true)
            {
              xrTableCell40.Text = zero;
            }
            else if (holder > 0)
            {
              holder = Convert.ToDouble(xrLabel135.Summary.GetResult()) / Convert.ToDouble(xrTableCell38.Summary.GetResult());
              string s = string.Format("{0:N2}", holder);
              xrTableCell40.Text = Convert.ToString(s);
            }
            else
            {
              xrTableCell40.Text = zero;
            } 
  }

答案 4 :(得分:1)

感谢您的帮助。这就是我最终提出的并且它有效。


 private void xrTableCell40_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
         {
         string value;
         bool Isnum;
       double holder;
       string zero;
             value = xrTableCell38.ToString();
             zero = 0.ToString();
         Isnum = double.TryParse(value, out holder);
         if (Isnum == true)
         {
             if (holder > 0)
                 holder = Convert.ToDouble(xrLabel135.Summary.GetResult()) / Convert.ToDouble(xrTableCell38.Summary.GetResult());
             else
             {

                 xrTableCell40.Text = Convert.ToString(zero);
                 //xrTableCell40.Text = zero;
             }
             string s = string.Format("{0:N2}", holder);
             xrTableCell40.Text = Convert.ToString(s);
         }


     }