2015-05-05 50 views
-2

我有一段代碼,如下所示:的Javascript值返回不數字(NaN)

var percentageTemp =((parseInt(score)/parseInt(guesses))*100); 
var percentage= percentageTemp.toFixed(2); 

scoreguesses均設定爲在代碼的開始,並且改變作爲用戶玩遊戲。該代碼正常工作,如果我離開score變量0,我得到一個NaN輸出。 爲什麼我會得到NaN輸出時score= 0

+0

你能告訴我們如何分數初始化? –

+0

當猜測爲0時,您應該只能得到NaN,當得分爲0時,您的代碼將分別給出0或「0.00」 – devnull69

+1

您無法將零除零 - 因此,NaN就像JavaScript無法對其進行量化。 - http://www.math.utah.edu/~pa/math/0by0.html和小提琴 - https://jsfiddle.net/bLzsgd8q/ –

回答

3

該代碼正常工作,如果我離開得分變量0,我得到一個NaN輸出。

你不應該這樣做(來自Node.js的REPL例子):

> var score = 0; var guesses = 1; var percentageTemp =((parseInt(score)/parseInt(guesses))*100); var percentage= percentageTemp.toFixed(2); console.log(percentage) 
0.00 

如果,另一方面,你在0離開guesses則:

> var score = 0; var guesses = 0; var percentageTemp =((parseInt(score)/parseInt(guesses))*100); var percentage= percentageTemp.toFixed(2); console.log(percentage) 
NaN 

...因爲it isn't possible to divide by zero

+0

至少'0/0'將返回'NaN'。任何其他'.../0'或'.../-0'將根據兩個數字的符號返回'-Infinity'或'Infinity'。 – Xufox

+0

Oh和'Inf​​inity/Infinity'也​​會返回'NaN'。 – Xufox

0

我建議使用基數。 parseInt(score,10)以確保該值不會轉換爲十六進制。另外請注意,JavaScript處理十進制數字不準確。嘗試把這個在你的控制檯 - (0.1 + 0.2),並看到一個不尋常的價值返回 - 0.30000000000000004