javascript - 我需要帮助弄清楚如何在计算复数时修复输出

标签 javascript complex-numbers

JavaScript 代码:

function ImaginaryNumbers(realNum, imaginary) {
    this.realNum = 0;
    this.imaginary = 0;
    this.realNum = (typeof realNum === 'undefined') ? this.realNum : parseFloat(realNum);
    this.imaginary = (typeof imaginary === 'undefined') ? this.imaginary : parseFloat(imaginary);  
}

ImaginaryNumbers.transform = function(num) {
    var imaginaryNumbers;
    imaginaryNumbers = (num instanceof ImaginaryNumbers) ? num : imaginaryNumbers;
    imaginaryNumbers = (typeof num === 'number') ? new ImaginaryNumbers(num, 0) : num;
    return imaginaryNumbers;
};

function display_complex(re, im) {
    if(im === '0') return '' + re;
    if(re === 0) return '' + im + 'i';
    if(im < 0) return '' + re + im + 'i';
    return '' + re + '+' + im + 'i';
}

function addingComplexNumbers(first, second) {
    var num1;
    var num2;
    var first = parseInt(document.getElementById("firstComplexNumber").value) + parseInt(document.getElementById("secondComplexNumber").value);
    var second = parseInt(document.getElementById("thirdComplexNumber").value) + parseInt(document.getElementById("fourthComplexNumber").value);
    num1 = ImaginaryNumbers.transform(first);
    num2 = ImaginaryNumbers.transform(second);    
    var realNum = num1.realNum + num2.realNum;
    var imaginary = num1.imaginary + num2.imaginary;
    return document.getElementById("result8").innerHTML = display_complex(realNum, imaginary);

/**************************************************** **********/

HTML Code:
<form>
    <h1>Computing Imaginary Numbers</h1>
    <fieldset>    
        <p>Input the first real number : <input type="text" id="firstComplexNumber" /></p>
        <p>Input the first imaginary complex number: <input type="text" id="secondComplexNumber" /></p>
    </fieldset>
    <br>
    <fieldset>    
        <p>Input the second real number: <input type="text" id="thirdComplexNumber" /></p>
        <p>Input the second imaginary complex number : <input type="text" id="fourthComplexNumber" /></p>
    </fieldset>
    <input type="button" onclick="addingComplexNumbers()" value="Add">
    <input type="button" onclick="subtractingComplexNumbers()" value="Subtract">
    <input type="button" onclick="multiplyingComplexNumbers()" value="Multiply">
    <input type="button" onclick="dividingComplexNumbers()" value="Divide">

    <p>Result: <br>
        <span id="result8"></span>
    </p>
</form>

我使用 (2, -7) 和 (4,3) 作为数字,但程序输出 2+0i。这不是答案。正确答案是 6-4i。我不确定应该在哪里寻找来修复计算。任何帮助都会很好!

最佳答案

您错误地初始化了虚数,请参阅 addingComplexNumbers 函数的更改。

有几种方法可以解决这个问题,但我只是将这些对传递到 ImaginaryNumbers 构造函数中

function ImaginaryNumbers(realNum, imaginary) {
  this.realNum = 0;
  this.imaginary = 0;
  this.realNum = (typeof realNum === 'undefined') ? this.realNum : parseFloat(realNum);
  this.imaginary = (typeof imaginary === 'undefined') ? this.imaginary : parseFloat(imaginary);
}

ImaginaryNumbers.transform = function(num) {
  var imaginaryNumbers;
  imaginaryNumbers = (num instanceof ImaginaryNumbers) ? num : imaginaryNumbers;
  imaginaryNumbers = (typeof num === 'number') ? new ImaginaryNumbers(num, 0) : num;
  return imaginaryNumbers;
};

function display_complex(re, im) {
  if (im === '0') return '' + re;
  if (re === 0) return '' + im + 'i';
  if (im < 0) return '' + re + im + 'i';
  return '' + re + '+' + im + 'i';
}

function addingComplexNumbers() {
  var first = new ImaginaryNumbers(parseInt(document.getElementById("firstComplexNumber").value) || 0, parseInt(document.getElementById("secondComplexNumber").value) || 0);
  var second = new ImaginaryNumbers(parseInt(document.getElementById("thirdComplexNumber").value) || 0, parseInt(document.getElementById("fourthComplexNumber").value) || 0);
  var realNum = first.realNum + second.realNum;
  var imaginary = first.imaginary + second.imaginary;
  var result = display_complex(realNum, imaginary);
  document.getElementById("result8").innerHTML = result;
  return result;
}
<form>
  <h1>Computing Imaginary Numbers</h1>
  <fieldset>
    <p>Input the first real number : <input type="text" id="firstComplexNumber" /></p>
    <p>Input the first imaginary complex number: <input type="text" id="secondComplexNumber" /></p>
  </fieldset>
  <br>
  <fieldset>
    <p>Input the second real number: <input type="text" id="thirdComplexNumber"/></p>
    <p>Input the second imaginary complex number : <input type="text" id="fourthComplexNumber" /></p>
  </fieldset>
  <input type="button" onclick="addingComplexNumbers()" value="Add">
  <input type="button" onclick="subtractingComplexNumbers()" value="Subtract">
  <input type="button" onclick="multiplyingComplexNumbers()" value="Multiply">
  <input type="button" onclick="dividingComplexNumbers()" value="Divide">

  <p>Result: <br>
    <span id="result8"></span>
  </p>
</form>

关于javascript - 我需要帮助弄清楚如何在计算复数时修复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51060386/

相关文章:

go - 迭代复数

python - 如何编写函数将 Canvas 上的点映射到真实平面上的点

javascript - AWS SimpleDB Javascript SDK 错误

javascript - CSS/JavaScript : After Hover effect

c - 在 gsl 中分配复数

Matlab将幅度和角度转化为复数

javascript - 将 Canvas 元素下载到图像

javascript - 如何正确转义 css/js 属性选择器 [attr=value] 中的属性值?

javascript - 如何使用 Google 打包应用程序或扩展程序显示托盘图标

wolfram-mathematica - Mathematica、Arg 和简化