1

したがって、私はコーディングにかなり慣れていないため、代わりに 0 を返すだけです。実行時に 3 つの入力として 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

intの代わりにdecimalを使用してください^。それは排他的ではないか、あなたが何をしようとしているのか疑問です。代わりに使用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 を入力すると、5 /12 がゼロに変換されるためゼロになりますAIRMIR = AIR / 12したがってPMT、andIPはゼロになり、ゼロPPになります。

変数の型decimalではなく、を使用する必要があります。int

于 2013-03-12T22:58:34.750 に答える