我仍然是学习C#的新手,并且想知道我是否能得到一些帮助。我正在编写一个程序C#和Windows表单,以便用户可以计算他们的每月付款和抵押贷款的利息。我支付的等式是: 付款= p * r /(1 - (1 + r)^( - n)) 其中p是贷款金额,r是从0(0%)和1(100%)的数字给出的月利率,n是月贷款的持续时间 然后支付的总利息的公式是:总利息= n * payment -p
现在我尝试使用Math.Pow方法输入所有这些数字作为双倍付款并得到错误的计算。我假设速率需要为小数,所以当我尝试将它们全部作为小数时,VS不喜欢" ^"方法或math.pow方法。所以我的问题是,你如何使用带有指数的小数? 对于那些希望看到我当前代码的人,请注意我只是想在我开始添加额外的'其他'之前完成计算。语句。
decimal amnt = Convert.ToDecimal(txtAMNT.Text);
string Amount=Convert.ToString(txtAMNT.Text);
decimal rate = Convert.ToDecimal(txtRATE.Text);
string Rate = Convert.ToString(txtRATE.Text);
decimal time = Convert.ToDecimal(txtTIME.Text);
string Time=Convert.ToString(txtTIME.Text);
decimal monthpay;
decimal totalinterest;
decimal realrate = rate / 100;
if ((Amount == "")||(Rate == "")||(Time==""))
{
MessageBox.Show("Please fill all boxes with numbers");
}
else
{
monthpay=amnt*realrate/(1-(1+realrate)^(-time));
totalinterest=time*monthpay-amnt;
mtbMonPay.Text=monthpay.ToString("c");
mtbTotalInterest.Text=totalinterest.ToString("c");
}
答案 0 :(得分:3)
您应该使用double进行此计算。
您获得错误结果的原因是您忘记将年利率除以12以获得每月利率。
十进制不支持取幂。此外,the caret operator(^
)不适用于C#中的取幂;没有取幂运算符。你只需要打电话给Math.Pow。
答案 1 :(得分:0)
double
应该足够准确。尝试将所有小数更改为双倍。
另一个问题是你的比率。实际汇率是输入值/ 100,这意味着1表示100%实际上最终为1%。