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