每次我运行它都会向下舍入num13,这不是我想要的。我想把它四舍五入到小数点后两位。如何将其四舍五入到小数点后两位,这样如果我输入正确的答案,例如10 / 4 == 2.50,那么if (num12 == num13)将计算为true?现在num13的计算结果是2,而不是预期的2.5。
Random NumberGen = new Random();
start6:
int num10 = NumberGen.Next(1, 11);
int num11 = NumberGen.Next(1, 11);
start5:
if (num10 > num11)
{
Console.Write(num10 + " / " + num11 + " = ");
decimal num12;
num12 = Convert.ToDecimal(Console.ReadLine());
num12 = Math.Round(num12, 2);
decimal num13;
num13 = num10 / num11;
num13 = Math.Round(num13, 2);
if (num12 == num13)
{
Console.Clear();
goto start;
}
else
{
Console.WriteLine("wrong answer, try again.");
goto start5;
}
}
else
{
goto start6;
}发布于 2016-10-20 04:57:53
尽管这听起来很奇怪,
decimal a = 10 / 4;将生成2,而不是2.5。这是因为如果操作数(10和4)都是整数,则/运算符将执行整数除法:
将两个整数相除时,结果始终为整数。(来源:)
在您的示例中,可以通过确保其中一个操作数不是整数来解决此问题:
decimal num13;
num13 = (decimal)num10 / num11;(同时:请考虑使您的变量名更具描述性。)
发布于 2016-10-20 04:57:35
您必须将num10和num11初始化为小数或双精度,因为当您将两个整数相除时,您将获得一个整数值。
发布于 2016-10-20 04:58:49
decimal num13;
num13 = (decimal)num10 / num11;https://stackoverflow.com/questions/40141329
复制相似问题