我或多或少是VB.NET的新手,我正在尝试为基本的财务和储蓄计算程序编写一个简单的控制台应用程序。
我在使用Math.Log()函数时遇到问题,希望有人能帮助我指出我的问题 错误/错误。
这是我需要工作的值(括号显示实际应该工作但不在我的代码中的值):
Public Class basicSavingsPlaner
Private userTotalCost As Double (50,000.00)
Private userSaves As Double (3,451.47)
Private userAnnualRate As Decimal (0,08)
Private userMonths As Double (should be 10)
如果我使用常规计算器(TI-82),我会得到userMonths的正确答案 10 ,这是我在计算器上输入的方式(我将数字从数字切换到我的声明的名称):
(log(((userAnnualRate * userTotalCost)/userSaves)+1)/(log(1+userAnnual)) = 10.0029...
这是我尝试为我的VB.NET控制台应用程序重新创建它:
userMonths = ((Math.Log((userAnnualRate * userTotalCost) / userSaves) + 1) / (Math.Log(1 + userAnnualRate)))
在这种情况下,userMonths的结果是 14.9 ,这是错误的。
如果有人能帮助我,我真的很感激,我已经在这个论坛和Google上搜索了好几天了。
// Televeinken
答案 0 :(得分:0)
问题在于使用括号()
的分组表达式,您正在使用Math.Log
和log
执行不同的表达式。
如果你这样改变((Log((userAnnualRate * userTotalCost) / userSaves) + 1) / (Log(1 + userAnnualRate)))
意味着它也会产生14.9
或者您可以进行类似
的更改 (Math.Log(((userAnnualRate * userTotalCost) / userSaves) + 1) / (Math.Log(1 + userAnnualRate)))
然后两者都会产生10.00
答案 1 :(得分:0)
如果仔细查看TI-82的声明并将其与VB.Net代码进行比较,您会发现两者之间的声明分组不同。尝试这样的事情(注意在初始日志语句之后的三个括号的分组而不是两个):
userMonths = (Math.Log(((userAnnualRate * userTotalCost) / userSaves) + 1) / (Math.Log(1 + userAnnualRate)))
userMonths = 10.000008962349851