【发布时间】:2020-05-28 18:49:24
【问题描述】:
如果我输入 £100、0.10、10(10 年),预期输出应该是 £259.37,但我得到 100.00000001000001
using System;
using System.Security.Cryptography;
namespace compound_interest
{
class Program
{
static void Main(string[] args)
{
Console.Write("Please enter the amount of money that is being compounded! ");
double P = Convert.ToDouble(Console.ReadLine());
Console.Write("Please enter the amount of interest (write it is 0.10 for 10% etc!! ");
double MP2 = Convert.ToDouble(Console.ReadLine());
Console.Write("Please enter the number of years");
double Y = Convert.ToDouble(Console.ReadLine());
double MP1 = Convert.ToDouble(Math.Pow(MP2, Y));
double MP = (MP1) + 1;
double A = (P) * (MP);
Console.WriteLine(A);
}
}
}
【问题讨论】:
-
是的,使用
decimal而不是double。 -
尝试使用小数,由于 Math.Pow 不得不改为双精度
-
嗯,这种不精确性是
double类型所固有的。decimal是解决它的方法,或者您可以将所有内容乘以 100 并改用整数计算。 -
因为我需要它来平方 MP2,答案将是我乘以 A 得到答案(兴趣量)
-
我没有得到你对 0.1^10 的期望?我怀疑你想要(1 + 利息)^years * 数量而不是你拥有的代码......但这不是一个编程问题......
标签: c#