我的程序无法确定是将Math.Round
作为decimal
还是double
执行,但我不知道如何修复此问题...这是我的代码,尽管第二个最后一行是我所关注的。
ArrayList topp1 = new ArrayList();
int toppcount = 0;
foreach (Control cb in GroupBoxH1T.Controls)
{
CheckBox cb1 = cb as CheckBox;
if (cb1.Checked == true)
{
toppcount++;
topp1.Add(cb1.Text);
}
}
if (cbhwchoice.Checked == false)
{
ArrayList topp2 = new ArrayList();
foreach (Control cb in GroupBoxH2T.Controls)
{
CheckBox cb1 = cb as CheckBox;
if (cb1.Checked == true)
{
toppcount++;
topp2.Add(cb1.Text);
}
}
toppcount = Math.Round((toppcount/2,MidpointRounding.AwayFromZero);
}
答案 0 :(得分:6)
Math.Round
需要一个浮点数或十进制数,因为在整数上调用它不会产生任何影响。如果要调用它,请传入该类型的值。为此,您可以简单地将分子和分母转换为所需的类型。例如:
decimal value = Convert.ToDecimal(toppcount) / 2.0M;
toppcount = Math.Round(value, MidpointRounding.AwayFromZero);
答案 1 :(得分:1)
在倒数第二行
toppcount = Math.Round((toppcount/2,MidpointRounding.AwayFromZero);
toppcount
是integer
2
也是integer
因此toppcount/2
会给你integer
例如,1/2
将为您提供0
尝试Convert.ToDecimal(toppcount)/2.0
要么
(Decimal)toppcount/2.0
答案 2 :(得分:0)
在if块的最后一个语句中将整数2替换为十进制2.0。所以声明会变成这样:
toppcount = Math.Round((toppcount/2.0))