使用带小数的指数
Using Exponents with Decimals
我对学习 C# 还是个新手,想知道是否可以得到一些帮助。我正在编写一个 C# 程序和 Windows 表单,以便用户可以计算他们的每月还款额和抵押贷款利息。我的付款等式是:
付款 = p * r / ( 1 - ( 1 + r ) ^ ( -n ) )
其中 p 是贷款金额,r 是以 0(0%)和 1(100%)之间的数字形式给出的月利率,n 是以月为单位的贷款期限
那么利息总额的计算公式为:利息总额=n*还款-p
现在,我尝试使用 Math.Pow 方法将所有这些数字输入为双精度数字,但计算结果不正确。我假设速率需要是小数,所以当我尝试将它们全部作为小数时,VS 不喜欢“^”方法或 math.pow 方法。所以我的问题是,你应该如何使用带指数的小数?
对于那些希望查看我当前代码的人,请注意我只是想在开始添加额外的 'else' 语句之前完成计算。
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");
}
double
对于您正在使用的精度应该非常准确。尝试将所有小数点更改为双精度数。
另一个问题是您的费率。输入实际汇率 value/100,这意味着 1,您说的 100% 实际上最终为 1%。
您应该使用 double 进行此计算。
您得到错误结果的原因是您忘记将年利率除以 12 得到月利率。
小数不支持取幂。此外,the caret operator (^
) 不适用于 C# 中的求幂;没有求幂运算符。您只需致电 Math.Pow.
另见
我对学习 C# 还是个新手,想知道是否可以得到一些帮助。我正在编写一个 C# 程序和 Windows 表单,以便用户可以计算他们的每月还款额和抵押贷款利息。我的付款等式是: 付款 = p * r / ( 1 - ( 1 + r ) ^ ( -n ) ) 其中 p 是贷款金额,r 是以 0(0%)和 1(100%)之间的数字形式给出的月利率,n 是以月为单位的贷款期限 那么利息总额的计算公式为:利息总额=n*还款-p
现在,我尝试使用 Math.Pow 方法将所有这些数字输入为双精度数字,但计算结果不正确。我假设速率需要是小数,所以当我尝试将它们全部作为小数时,VS 不喜欢“^”方法或 math.pow 方法。所以我的问题是,你应该如何使用带指数的小数? 对于那些希望查看我当前代码的人,请注意我只是想在开始添加额外的 'else' 语句之前完成计算。
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");
}
double
对于您正在使用的精度应该非常准确。尝试将所有小数点更改为双精度数。
另一个问题是您的费率。输入实际汇率 value/100,这意味着 1,您说的 100% 实际上最终为 1%。
您应该使用 double 进行此计算。
您得到错误结果的原因是您忘记将年利率除以 12 得到月利率。
小数不支持取幂。此外,the caret operator (^
) 不适用于 C# 中的求幂;没有求幂运算符。您只需致电 Math.Pow.
另见