Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#变量自动向下舍入,而它';s设置为四舍五入到2位小数_C# - Fatal编程技术网

C#变量自动向下舍入,而它';s设置为四舍五入到2位小数

C#变量自动向下舍入,而它';s设置为四舍五入到2位小数,c#,C#,每次我运行它时,它都会向下旋转num13,这不是我想要的。我想把它四舍五入到小数点后两位。如何将其四舍五入到小数点后2位,以便如果我输入正确的答案,例如10/4==2.50,那么如果(num12==num13)将计算为true?现在num13的计算结果为2,而不是预期的2.5 Random NumberGen = new Random(); start6: int num10 = NumberGen.Next(1, 11); int num11 = NumberGen.Next(

每次我运行它时,它都会向下旋转
num13
,这不是我想要的。我想把它四舍五入到小数点后两位。如何将其四舍五入到小数点后2位,以便如果我输入正确的答案,例如
10/4==2.50
,那么
如果(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;
    }

您必须将num10和num11初始化为十进制或双倍初始值,因为当您除以两个整数时,将得到一个整数值。

您必须将num10和num11初始化为十进制或双倍初始值,因为当您除以两个整数时,将得到一个整数值。

听起来很奇怪

decimal a = 10 / 4;
将产生
2
,而不是
2.5
。这是因为
/
运算符在其两个操作数(
10
4
)都是整数时执行整数除法:

当你除以两个整数时,结果总是一个整数。(来源:)

在您的情况下,可以通过确保其中一个操作数不是整数来解决此问题:

decimal num13;
num13 = (decimal)num10 / num11;

(当你在做的时候:请考虑让你的变量名更具描述性)。

听起来很奇怪,

decimal a = 10 / 4;
将产生
2
,而不是
2.5
。这是因为
/
运算符在其两个操作数(
10
4
)都是整数时执行整数除法:

当你除以两个整数时,结果总是一个整数。(来源:)

在您的情况下,可以通过确保其中一个操作数不是整数来解决此问题:

decimal num13;
num13 = (decimal)num10 / num11;

(当你在这方面:请考虑让你的变量名更具描述性)。

decimal num13=  Math.Round((decimal)num10 / num11, 2);
一行

decimal num13=  Math.Round((decimal)num10 / num11, 2);

这是你的朋友。整数除法
10/4=2
在除法整数时,因为余数被截断了。为什么在c#?!中使用goto语句?!?我强烈建议不惜一切代价避免
goto
。有几个地方被认为可以普遍接受使用
goto
,但它们都是非常特殊的情况。它创建了非常糟糕的程序流。谢谢它的工作,我很愚蠢。这是你的朋友。整数除法
10/4=2
在除法整数时,因为余数被截断了。为什么在c#?!中使用goto语句?!?我强烈建议不惜一切代价避免
goto
。有几个地方被认为可以普遍接受使用
goto
,但它们都是非常特殊的情况。它创建了非常糟糕的程序流程。感谢它成功了,我很惊讶。你建议了相同的答案,但在我之前:(你建议了相同的答案,但在我之前:(