控制台计算应用程序仅返回 0

本文关键字:返回 应用程序 计算 控制台 | 更新日期: 2023-09-27 18:03:41

所以我对编码相当陌生,我只是把0拉回来作为回报。我在运行时输入 10000 5 和 10 作为我的 3 个输入,除了所有三个字段的 0 之外,我无法从中返回任何内容。我想也许我的程序想要变量的起点,所以我将它们全部声明为 0 开始,但它仍然不起作用。

int AIR, MIR, PMT, IP, PP, ABorrowed, Term;
        AIR = 0;
        MIR = 0;
        PMT = 0;
        IP = 0;
        PP = 0;
        ABorrowed = 0;
        Term = 0;
        Console.WriteLine("Please enter the amount borrowed on your loan ");
        ABorrowed = int.Parse(Console.ReadLine());
        Console.WriteLine("Please enter the interest rate for your loan ");
        AIR = int.Parse(Console.ReadLine());
        Console.WriteLine("Please enter term of your loan in months ");
        Term = int.Parse(Console.ReadLine());
        MIR = AIR / 12;
        PMT = ABorrowed * (MIR/((1-(1/(1+MIR))^Term)));
        IP = ABorrowed * MIR;
        PP = PMT - IP;
        Console.WriteLine("Your total payment for this month is " + PMT);
        Console.WriteLine("Of that payment " + IP + " is interest rate");
        Console.WriteLine("and the Payment Portion is " + PP);
        Console.ReadLine();

控制台计算应用程序仅返回 0

此代码中有几个与您的描述相关的问题:

  1. 您正在使用整数除法
  2. 您(很可能(错误地使用^
首先,整数

除法返回一个整数,意思是:

10 / 3 = 3

如果您使用decimal而不是int作为您的类型,则更有可能获得正确的结果。

此外,你在那里使用^,我认为这是你提升某些东西到其他东西的力量的方式,但^XOR运算符,它完全做其他事情。

若要在 C#/.NET 中将某些内容提升到其他内容的强大功能,请使用 Math.Pow:

PMT = ABorrowed * (MIR/((1-Math.Pow((1/(1+MIR)), Term))));

(我想我设法在这里的正确部分放置了 Math.Pow 调用(

这里的核心问题是你使用的是int . 这种类型只能代表整数,对于财务计算来说很糟糕。 在计算货币时,使用decimal而不是int

使用十进制而不是 int ^不是它独有的功能,或者我怀疑这是你想要的。而是使用Math.Pow

实际上,查看代码,您可以使用var避免一些麻烦,而不是在开始时声明所有内容。

    Console.WriteLine("Please enter the amount borrowed on your loan ");
    var ABorrowed = decimal.Parse(Console.ReadLine());
    Console.WriteLine("Please enter the interest rate for your loan ");
    var AIR = decimal.Parse(Console.ReadLine());
    Console.WriteLine("Please enter term of your loan in months ");
    var Term = decimal.Parse(Console.ReadLine());
    var MIR = AIR / 12;
    var PMT = ABorrowed * (MIR/((1-Math.Pow((1/(1+MIR)), Term))));
    var IP = ABorrowed * MIR;
    var PP = PMT - IP;
    Console.WriteLine("Your total payment for this month is " + PMT);
    Console.WriteLine("Of that payment " + IP + " is interest rate");
    Console.WriteLine("and the Payment Portion is " + PP);
    Console.ReadLine();

除法运算符 '/' 截断为最接近零的整数,因此分配给 MIR 会破坏一切。

您已将变量声明为 INT,因此,如果您输入 5 表示AIRMIR = AIR / 12将为零,因为 5/12 将转换为零。因此,PMTIP将为零,PP将为零。

您应该对变量类型使用 decimal ,而不是int