我正在尝试在每次点击后更新只读文本框中的值“月数”和“余额”。在给定的上下文中,当应用程序开始时,它们的起始值都应为0。每次点击后都应该更新它们,只需加上几个月(1,2,3等)。余额应显示每次点击时累计的特定值。
余额等于每月储蓄金额每月复利,因此它取决于每次点击后产生的月数。
我可以在每次点击后点击月份计数器,因为您将在代码中看到,但我无法弄清楚如何更新余额并在每次激活“下个月”按钮后显示它。
log.Info("typeof:" + typeof(FunctionResult));
我的表格:
P.S。这是更新的代码,是的我有其他问题!
命名空间Assignment1_BTM380 { public partial class frmSavingsCalculator:Form { public frmSavingsCalculator() { 的InitializeComponent(); }
public partial class frmSavingsCalculator : Form
{
public frmSavingsCalculator()
{
InitializeComponent();
}
int months = 0;
double balance = 0;
private void btnNext_Click(object sender, EventArgs e)
{
double monthlypmt;
int annualrate;
if (double.TryParse(txtMonthlySavings.Text, out monthlypmt))
{
if (int.TryParse(txtAnnualInt.Text, out annualrate))
{
annualrate = annualrate / 100;
double monthlyrate = annualrate / 12;
double changerate = (1 + monthlyrate);
txtMonths.Text = months.ToString();
months++;
balance = monthlypmt + Math.Pow(changerate, months);
txtBalance.Text = balance.ToString("c");
balance++;
}
else
{
MessageBox.Show("Please insert valid interest rate.");
}
}
else
{
MessageBox.Show("Please insert valid number.");
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
所以,如果你有耐心,请耐心等待。每次点击“下个月”按钮时,我设法得到两个文本框,只有我似乎无法在余额中获得适当的值。根据我教授的例子,在12个月后,余额应该显示619.86美元,仅在我的表格中显示868.06美元。我认为问题在于平衡计算,我希望你们中的一些人可以评论。
感谢所有花时间回复的人!
答案 0 :(得分:0)
您实际上做得对,问题是由于类型变量问题,您在初始计算后总是得到相同的结果。
问题在于本地变量" annualrate"是整数。
最初它有意义,因为你强迫他们在文本框中写一个整数。然而,当你通过将它除以100来实现它时,问题就出现了。
annualrate = annualrate / 100;
除非文本框中的比率大于或等于100,否则总是会得到零的比率,因为数学上0到100之间(不包括100)除以100之间的任何数字的结果总是在0和1之间(不包括1)。例如,50%的比率应该给你0.5,但由于整数除法,结果只会为0。
一个简单的解决方法是:
...
double realannualrate = annualrate / 100;
double monthlyrate = realannualrate / 12;
...
您可能还想考虑将计算和初始化移动到单独的函数