抱歉,我只是需要一双额外的眼睛,我在怀疑自己。我正在努力将经典 vb6 转换为 c#,并且我已经查找了有关运算符优先级的表,但是我仍然无法正确计算。
VB6
= _
m_curAmountInvested * (1 + m_dblInterestRate / 12) ^ m_intMonthsToAttain + _
m_curAddDeposits * ((1 + m_dblInterestRate / 12) ^ m_intMonthsToAttain - 1) / (m_dblInterestRate / 12)
C#
= (currentAmountSaved * Math.Pow((1d + interestRate) / 12d, numberOfMonths)) +
((monthlySavingsAmount * (Math.Pow((1d + interestRate) / 12d, numberOfMonths) - 1d)) / (interestRate / 12d))
最佳答案
在我看来,您的 C# 代码可能存在问题:
Math.Pow((1d + interestRate) / 12d, ...)
您的 VB6 代码具有:
(1 + m_dblInterestRate / 12) ^ ...
vb6 中 * 和/运算符的优先级高于 + 和 -,因此除法将发生在加法之前。然而,在 C# 版本中,由于括号的存在,情况并非如此(即先进行加法,然后进行除法)。
关于c# - 我这个翻译正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546120/