2013-10-01 55 views
0

我試圖讓下面的公式工作,但我得到了錯誤的結果,雖然我不認爲它有什麼問題。Javascript Math.log錯誤的結果,Visual Studio

用戶類型4個號碼exammple:

  • INPUT1 = 100
  • 輸入2 = 75
  • 輸入3 = 30
  • INPUT4 = 170

公式:

var results = (Math.log(input1 + input2 - input3)/Math.log(10)) - (Math.log(input4)/Math.log(10)); 

結果是:2.6這是錯誤的。

如果我改變下面的公式,它的工作原理。

var results = (Math.log(145)/Math.log(10)) - (Math.log(170)/Math.log(10)); 

結果是:-0.1

這是爲什麼?我錯過了什麼嗎?

回答

0

有什麼不妥

var results = (Math.log(input1 + input2 - input3)/Math.log(10)) - (Math.log(input4)/Math.log(10)); 

的問題在這裏:

var input1 = document.getElementById("one").value; 
var input2 = document.getElementById("two").value; 
var input3 = document.getElementById("three").value; 
var input4 = document.getElementById("four").value; 

用戶給出被視爲字符串,因此當程序運行上述公式中的數字將生產以下內容:

var results = (Math.log(10075 - 30)/Math.log(10)) - (Math.log(170)/Math.log(10)); 

因爲當你在Javascript中添加兩個字符串例如One + Two時,它會給你OneTwo。

因此,100 + 75 = 10075

爲了固定它,我在document.getElementById前面加+

var input1 = +document.getElementById("one").value; 
var input2 = +document.getElementById("two").value; 
var input3 = +document.getElementById("three").value; 
var input4 = +document.getElementById("four").value; 
1

聽起來像你可能有其他的東西導致這種不正確的行爲。兩個代碼塊都會產生相同的結果。請參閱http://jsfiddle.net/Pajeh/鏈接。

var input1 = 100; 
var input2 = 75; 
var input3 = 30; 
var input4 = 170; 

var results1 = (Math.log(input1 + input2 - input3)/Math.log(10)) - (Math.log(input4)/Math.log(10)); 
alert(results1); 

var results2 = (Math.log(145)/Math.log(10)) - (Math.log(170)/Math.log(10)); 
alert(results2);