2013-04-17 12 views
1

我搜索了一個解決方案,但我一直有同樣的問題。我有一個JavaScript代碼,解決了二次方程。這裏有我的代碼::等式的Javascript代碼

var x1 = document.getElementById('x1').value; 
var x2 = document.getElementById('x2').value; 
var x3 = document.getElementById('x3').value; 
var x4 = document.getElementById('x4').value; 
var x5 = document.getElementById('x5').value; 


var discriminant = (x2*x2)-(4*(x1*x3)); 
if (discriminant > -1){ 
var x1 = (-x2+Math.sqrt(discriminant))/(2*x1); 
var x2 = (-x2-Math.sqrt(discriminant))/(2*x1); 
document.getElementById('totx1').value = x1; 
document.getElementById('totx2').value = x2; 
var temp1 = (x5*x1)+1*x4; 
document.getElementById('toty1').value = temp1; 
var temp2 = (x5*x2)+1*x4; 
document.getElementById('toty2').value = temp2;} 

由於某些原因x1是正確的,但x2給了我一個錯誤的結果。任何人都可以幫我嗎?在這裏您可以看到一個輸入示例:

2x^2 + 2x - 40 = 0 | y = x4 + x5

正確的解決方案是[x1 = 4 || y1 = 5]和[x2 = -4 || y2 = -5]但我得到[x1 = 4 || y1 = 5]和[x2 = -10 || Y2 = -9]

+0

你重新使用變量x1和x2,所以當找到第二個解決方案時,它使用錯誤的x1。不知道這是與問題有關還是僅僅是打字錯誤。 –

+0

從文本框中讀取值總是會給你一個字符串,在數學運算中使用它們之前,你應該將這些字符串轉換爲整數(通過'parseInt')或小數(通過'parseFloat')。 – jbabey

+0

是的,這與我的問題有關,我剛剛解決了它。 –

回答

1

使用parseFloat:

var x1 = parseFloat(document.getElementById('x1').value); 

和使用的輸入和輸出不同的變量名:您重用x1的事實使這種虛假的:

var x1 = (-x2+Math.sqrt(discriminant))/(2*x1); 
var x2 = (-x2-Math.sqrt(discriminant))/(2*x1); 
+0

謝謝你dystroy –