2014-09-11 5 views
1

나는 VB.NET을 처음 접했고 기본 금융 및 저축 계산 프로그램을위한 간단한 콘솔 응용 프로그램을 프로그래밍하려고합니다.VB.NET 콘솔 응용 프로그램 - Math.Log()를 사용하는 데 문제가 있습니다.

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을 사용하는 경우 :

이 내가 작업하는 데 필요한 값이다 (괄호는 실제로 작동하지만 내 코드에서하지 않는해야하는 값을 보여줍니다)

(log(((userAnnualRate * userTotalCost)/userSaves)+1)/(log(1+userAnnual)) = 10.0029... 

이것은 나의 시도 :) 내가 10입니다 userMonths의 정확한 답변을 얻을, 이것이 내가 내 계산기에 입력하는 방법이다 (I 내 선언의 이름)에 자리에서 값을 전환 내 VB.NET 콘솔 용으로 다시 만듭니다. 기 :이 경우

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

는 userMonths의 결과는 잘못 14.9이다.

누군가가 나를 도울 수 있다면 정말 고맙겠습니다. 나는이 포럼과 Google에서 며칠 동안 여기서 검색했습니다.

// Televeinken

+0

당신은 Math.Log은 도심 전자를 사용하는 알기나 해? – LeleDumbo

+0

괄호 배치가 잘못 되었습니까? 로그 기능 (Math.Log ((userAnnualRate * userTotalCost)/userSaves)을 수행하면 +1이 로그 결과에 추가됩니다. 이것이 어떻게되어야 하는가? –

+0

@ TheShaman : 예, +1이 있어야합니다. 내 필기 수식을 참조하십시오 : [image] (http://www.livna.se/Bilder/savingsformula.jpg) – Televinken

답변

0

가 발생합니다 만들 수 있다는 것을 의미합니다 TI-82의 성명서에서 VB.Net 코드와 비교해보십시오.이 두 문장을 다르게 그룹화 한 성명서를 볼 수 있습니다. (대신 두의 초기 로그 문 뒤에 주 세 브래킷의 그룹)이 같은 시도 :

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

userMonths는 = 10.000008962349851

+1

당신이 그것을 해결, 대단히 감사합니다 @ 마크! 너무 오랫동안 내 코드를 쳐다 본 후에 나는 장님이되었다고 생각합니다. 다시 감사합니다! // Tommy – Televinken

0

문제는 당신이 Math.Loglog 서로 다른 표현을 실행중인입니다 괄호 ()로 그룹화 표현식입니다. 이 ((Log((userAnnualRate * userTotalCost)/userSaves) + 1)/(Log(1 + userAnnualRate))) 같이 변경하는 경우

는 는 또한 14.9

가 발생합니다 또는 당신이 자세히 보면

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

같은 변화는 다음 모두 10.00