1

私は解決策を探しましたが、同じ問題を抱えています。私は二次方程式を解く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]

4

1 に答える 1

1

parseFloat を使用します。

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

そして、入力と出力に異なる変数名を使用します: 再利用x1すると、これは false になります:

var x1 = (-x2+Math.sqrt(discriminant))/(2*x1); 
var x2 = (-x2-Math.sqrt(discriminant))/(2*x1);
于 2013-04-17T20:00:00.470 に答える