我是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
中。
答案 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);
}
}