【问题标题】:How do I divide integers and not get a 1如何除整数而不是 1
【发布时间】:2020-09-17 08:12:03
【问题描述】:

只是一个简单的 c# 控制台程序。答案始终是 1,但我想得到正确答案,并且答案始终是整数,这里只有整数。

        Console.Write("Ange dagskassa (kr): ");
        string inlasning = Console.ReadLine();
        int dagskassa = int.Parse(inlasning);

        Console.Write("Ange nuvarande lunchpris (kr): ");
        string inlasning2 = Console.ReadLine();
        int lunchpris = int.Parse(inlasning);

        double antalGaster = dagskassa / lunchpris;

        Console.WriteLine("Antal gäster: " + antalGaster + "st.");

【问题讨论】:

  • 整数除法问题:3 / 2 = 1,但3.0 / 2 = 1.5;将至少一个值转换为double,例如double antalGaster = (double)dagskassa / lunchpris;
  • 为什么要截断,详细说明:stackoverflow.com/q/10851273/2864740stackoverflow.com/q/1043164/2864740stackoverflow.com/q/3498421/2864740 - 如果目标是“四舍五入”(或 其他可能是),将其添加到搜索查询“C#整数除法向上”等
  • int lunchpris = int.Parse(inlasning2); //from inlasning -> inlasning2 double antalGaster = (double)dagskassa / lunchpris;

标签: c#


【解决方案1】:

您需要将整数转换为 double 才能使上述操作生效。例如,

int i = 1;
int j = 2;
double _int = i / j; // without casting, your result will be of type (int) and is rounded
double _double = (double) i / j; // with casting, you'll get the expected result

就您的代码而言,这将是

double antalGaster = (double) dagskassa / lunchpris;

要四舍五入到人数的最低整数,请使用 Math.Floor()

double antalGaster = Math.Floor((double) dagskassa / lunchpris);

【讨论】:

  • 哎呀!刚刚编辑以说明这一点,谢谢 Rufus
  • 另外,System.Math.Floor 将创建一个截断的整数,而不是四舍五入到最接近的整数(如System.Math.Round)。小心你使用什么语言来进行四舍五入。考虑使用Round 而不是Floor,或者更新你的文本,说它将截断而不是圆形。
  • 是的,我在这里选择了楼层,因为任何超过整数的增量都代表一个人的一小部分。我认为 System.Math.Round 更适合用于与您可以容纳的人数无关的示例
【解决方案2】:

这里的问题是你将相同的数字转换两次,转换为两个不同的变量,然后将它们相除,所以答案总是1

int dagskassa = int.Parse(inlasning);
int lunchpris = int.Parse(inlasning);  // You're parsing the same input as before

要解决此问题,请将 second 输入转换为午餐价格:

int dagskassa = int.Parse(inlasning2);  // Parse the *new* input instead

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2023-03-06
    相关资源
    最近更新 更多