首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#变量自动向下舍入,而它被设置为四舍五入为2位小数

C#变量自动向下舍入,而它被设置为四舍五入为2位小数
EN

Stack Overflow用户
提问于 2016-10-20 04:52:41
回答 4查看 390关注 0票数 0

每次我运行它都会向下舍入num13,这不是我想要的。我想把它四舍五入到小数点后两位。如何将其四舍五入到小数点后两位,这样如果我输入正确的答案,例如10 / 4 == 2.50,那么if (num12 == num13)将计算为true?现在num13的计算结果是2,而不是预期的2.5。

代码语言:javascript
复制
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;
    }
EN

回答 4

Stack Overflow用户

发布于 2016-10-20 04:57:53

尽管这听起来很奇怪,

代码语言:javascript
复制
decimal a = 10 / 4;

将生成2,而不是2.5。这是因为如果操作数(104)都是整数,则/运算符将执行整数除法:

将两个整数相除时,结果始终为整数。(来源:)

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

代码语言:javascript
复制
decimal num13;
num13 = (decimal)num10 / num11;

(同时:请考虑使您的变量名更具描述性。)

票数 2
EN

Stack Overflow用户

发布于 2016-10-20 04:57:35

您必须将num10和num11初始化为小数或双精度,因为当您将两个整数相除时,您将获得一个整数值。

票数 0
EN

Stack Overflow用户

发布于 2016-10-20 04:58:49

代码语言:javascript
复制
decimal num13;
num13 = (decimal)num10 / num11;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40141329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档