1

所以我对编码相当陌生,我只是把 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();
4

5 回答 5

3

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

  1. 您正在使用整数除法
  2. 您(很可能)使用^不正确

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

10 / 3 = 3

decimal如果你使用而不是int你的类型,你更有可能得到正确的结果。

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

要在 C#/.NET 中将某些东西提升到其他东西的力量,您可以使用Math.Pow

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

(我我设法将 Math.Pow 调用放置在此处的正确部分周围)

于 2013-03-12T22:57:46.790 回答
2

这里的核心问题是您正在使用int. 这种类型只能表示整数,不利于财务计算。在计算金钱使用decimal而不是int

于 2013-03-12T22:55:12.933 回答
1

使用 decimal 而不是 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();
于 2013-03-12T22:58:33.190 回答
0

除法运算符“/”截断为最接近零的整数,因此对 MIR 的赋值会破坏所有内容。

于 2013-03-12T22:55:52.880 回答
0

您已将变量声明为 INT,因此如果您输入 5,AIR则将MIR = AIR / 12为零,因为 5/12 将转换为零。因此PMT,andIP将为零,并且PP将为零。

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

于 2013-03-12T22:58:34.750 回答