C# 中的税收计算器 - 如何显示一段时间内的债务

Tax Calculator in C# - How to Display debt over time

所以我想在 c# 中创建一个执行以下操作的税收计算器:

示例 1:

Input:

1200.0 - amount loaned

10 - tax in percentage

3 - number of years in debt 

Output:

    Growth of debt throughout 3 years:

    1200.0

    1320.0

    1452.0

    1597.2

到目前为止我有这个:

static int Mostra(int n, int p, int q)
    {
        int res = n + ((n * (p / 100)) * q);

        Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");

    }


    static bool Validar(string s, out int i)
    {
        bool res = int.TryParse(s, out i);
        if (!res)
            i = 0;
        return res;

    }


    static void Main(string[] args)
    {
        Console.WriteLine("Insira o valor do seu empréstimo em euros:");
        string s1 = Console.ReadLine();
        Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
        string s2 = Console.ReadLine();
        Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
        string s3 = Console.ReadLine();

        string[] valores = new string[p];


        int n;
        int p;
        int q;


        if (Validar(s1, out n) && Validar(s2, out p) && Validar(s3, out q))
        {
            if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
            {
                //Mostra(n, p, q);
            }
            else
                Console.WriteLine("O valor introduzido é inválido.");

        }

        Console.ReadKey();
    }

请记住,这是一个控制台应用程序。 我这里的问题是如何显示多年来的债务而不是最终结果。以及如何以小数形式显示它,如示例所示。如果你能帮助我我会很高兴:D

如果您想将结果显示为小数,您应该使用 decimal 数据类型而不是 int 数据类型。

在您的初始示例中,虽然您每年也增加了利息,但您的计算在整个时间段内的利息是固定的,该函数应该看起来更像

static int Mostra(decimal n, decimal p, int q)
{
    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");
    decimal res = n;
    for (int i = 1; i <= q; i++)
    {
        res+= res * (p / 100);
        Console.WriteLine(res);
    }

}

您还需要编辑 Validar 方法以使用 decimal.TryParse 处理小数转换,因为利率和金额应为小数以处理基于小数的计算 - 年份仍然可以是整数虽然

好了,我注意到有几件事有点不稳定。您需要将 Validar 中的一些变量从整数更改为双精度...否则如果您希望输入为 x.0,您的代码将无法处理 .0,因为您正在寻找一个整数验证方法。我已经修复了一些代码,以便您输入的任何整数都可以工作,并且您将获得您正在寻找的格式的输出。

using System;

    public class Program
    {
     static void Mostra(double n, double p, double q)
     {
    //double res = n + ((n * (p / 100)) * q);

    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos: \n");

    //Loop that increments each year for q number of years
    for (int x = 0; x < q + 1; x++)
    {
        double res = 0;
        res = n + ((n * (p / 100)) * x);
        Console.WriteLine(res);
    }

}


static double Validar(string s)
{
    int x = int.Parse(s);
    double res = (double)(x);

    return res;

}


public static void Main(string[] args)
{
    Console.WriteLine("Insira o valor do seu empréstimo em euros:");
    string s1 = Console.ReadLine();
    Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
    string s2 = Console.ReadLine();
    Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
    string s3 = Console.ReadLine();

    double n = Validar(s1);
    double p = Validar(s2);
    double q = Validar(s3);



    if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
    {
        Mostra(n, p, q);
    }
    else
        Console.WriteLine("O valor introduzido é inválido.");

}
}