使用Double除法.TryParse和if-else语句

本文关键字:if-else 语句 TryParse Double 除法 使用 | 更新日期: 2023-09-27 18:02:44

我是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

使用Double除法.TryParse和if-else语句

基本三元运算符用法

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

解释三元或?:运算符:

如果cond为真,则cond ? a : b求值为a,否则,cond ? a : b求值为b

希望你能利用这个找到自己的解决方案

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;
        }

快速回答:

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

这段代码肯定不会为你赢得任何风格加分。几个快速提示:

  • 使用有意义的变量。我希望在某个地方看到"分母"作为变量。
  • 同时声明和使用变量——这将提高可读性。使用您的代码示例,使用

  • string value = xrTableCell38.ToString()
  • 在你的代码的流程和可读性上多花点功夫

祝你好运,记住熟能生巧

罗兰....在if语句中,Isnum为真且holder为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;
            } 
  }

谢谢你的帮助。这是我最终想出的方法,它很有效。


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

     }