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.");
}
}
所以我想在 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.");
}
}