VB.NET控制台应用程序-使用Math.Log()时出现问题



我或多或少是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,这是错误的。

如果有人能帮我,我将不胜感激,我已经在这个论坛和谷歌上搜索了好几天了。

//Televenken

如果您仔细查看TI-82中的语句,并将其与VB.Net代码进行比较,您会发现这两个语句的分组方式不同。尝试这样的操作(请注意,初始日志语句后的三个括号分组,而不是两个):

userMonths = (Math.Log(((userAnnualRate * userTotalCost) / userSaves) + 1) / (Math.Log(1 + userAnnualRate)))

userMonths=10.000008962349851

问题在于用括号()对表达式进行分组,即用Math.Loglog执行不同的表达式。

如果你这样改变((Log((userAnnualRate * userTotalCost) / userSaves) + 1) / (Log(1 + userAnnualRate)))意味着它也将导致14.9

或者你可以像一样做出改变

 (Math.Log(((userAnnualRate * userTotalCost) / userSaves) + 1) / (Math.Log(1 + userAnnualRate)))

则两者都将导致10.00

相关内容

最新更新