2015-12-02 115 views
2

程序需要爲presentValuemonthsinterest產生一個隨機數,速率在.1-.10%之間。當我需要總數時產生NAN

當進行最終計算時,我得到NaN。

var count = 5; 

function futureValue(presentValue, interest, months) { 
    var step1 = 1 + Number(interest); 
    var step2 = parseFloat(Math.pow(step1, months)); 
    var step3 = presentValue * step2; 
    return "The future value is: " + step3; 
} 

for (i = 0; i < count; i++) { 
    var presentValue = Math.floor(Math.random() * 100) 
    var interest = ((Math.random() * .10 - 0.1) + .1).toFixed(2) 
    var months = Math.floor(Math.random() * 100) 
    futureValue(presentValue, interest, months) 
    console.log("The present value is: " + presentValue); 
    console.log("The interest rate is: " + interest); 
    console.log("The number of months is: " + months); 
    console.log(futureValue()); 
} 
+0

您呼叫futureValue()不帶參數。 NaN =不是數字,因爲您使用「未定義」進行計算,確實不是數字, –

+0

無關,但請縮進您的代碼並使用一致的空白規則 - 使事情更易於閱讀和思考。另外,爲什麼要調用這個函數兩次? –

+0

另請注意:.1和.10是相同的數字......(百分比與否)這似乎給出了從0到0.1的利率(即:0%到10%) – ebyrob

回答

5

您需要在參數傳遞:

console.log(futureValue()) 

console.log(futureValue(presentValue,interest,months)) 
0

這是因爲

return("The future value is: " + step3); 

是一個字符串。所以,它確實不是一個數字。

你應該只返回數字,然後創建字符串。

2

您正在調用futureValue()而不帶參數。它返回NaN(非數字),因爲你打的是「不確定」,這的確不是一個數字,

嘗試算了一筆賬:

var count = 5 
 
function futureValue(presentValue,interest,months){ 
 
var step1 = 1 + Number(interest); 
 
var step2 = parseFloat(Math.pow(step1,months)); 
 
var step3 = presentValue*step2; 
 
return("The future value is: " + step3); 
 

 

 
} 
 

 

 
for (i=0;i<count;i++){ 
 
var presentValue = Math.floor(Math.random()*100) 
 
var interest = ((Math.random()*.10-0.1)+.1).toFixed(2) 
 
var months = Math.floor(Math.random()*100) 
 
var fv = futureValue(presentValue,interest,months) //save your futureValue in a variable. 
 
console.log("The present value is: " + presentValue); 
 
console.log("The interest rate is: " + interest); 
 
console.log("The number of months is: " + months); 
 
console.log(fv)//log your calculated future value 
 

 
}

0

一旦你調用futureValue(presentValue,interest,months)值消失。如果你想console.log結果,你應該把它存儲在一個變量,然後console.log。

2

這條線正確計算未來值,並且什麼也不做。

futureValue(presentValue,interest,months); 

此行返回調用futureValue功能不帶參數,返回NaN,並將結果寫入日誌。

console.log(futureValue()); 

你應該做的是價值分配給一個變量,然後登錄該值:

var futureVal = futureValue(presentValue,interest,months); 
console.log(futureVal); 

或者只是:

console.log(futureValue(presentValue,interest,months));