2013-04-17 7 views
1

해결책을 찾았지만 동일한 문제가 계속 발생합니다. 두 번째 학위 방정식을 해결하는 자바 스크립트 코드가 있습니다. 여기에 내 코드가있다 :방정식을위한 자바 스크립트 코드

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를 재사용 사실이 거짓이 있습니다 변수 x1과 x2는 두 번째 해가 발견되면 잘못된 x1을 사용합니다. 그게 문제 또는 오타가 아닌지 모릅니다. –

+0

텍스트 상자에서 값을 읽으면 항상 문자열이 생기므로 수학 연산에서 사용하기 전에이 문자열을 정수 (parseInt를 통해) 또는 소수를 (parseFloat를 통해) 변환해야합니다. – jbabey

+0

그래, 그게 내 문제와 관련이있어, 방금 해결 했어. –

답변

1

사용에서는 parseFloat :

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

그리고 입력과 출력에 대해 서로 다른 변수 이름을 사용 : 당신은

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

감사합니다. –