JavaScript 数学 — 得到错误答案 (128 - 64 = -64)?

标签 javascript jquery math

我正在尝试为显卡制作一个低级性能比较工具,除了总线宽度比较之外,一切都工作得很好。

var bl_bus = $('#baseline-ram-bus-width').val();
var tg_bus = $('#target-ram-bus-width').val();

// Memory Bus Width
    if (tg_bus < bl_bus) {
        $('#compare-bus-bl span').text("+" + (bl_bus - tg_bus));
        $('#compare-bus-tg span').text((tg_bus - bl_bus));
    }
    if (tg_bus === bl_bus) {
        $('#compare-bus-bl span').text("Equal");
        $('#compare-bus-tg span').text("Equal");
    }
    if (tg_bus > bl_bus) {
        $('#compare-bus-bl span').text((tg_bus - bl_bus));
        $('#compare-bus-tg span').text("+" + (bl_bus - tg_bus));
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<label for="baseline-ram-bus-width">Baseline Memory Bus Width:</label>
<input id="baseline-ram-bus-width" type="number" placeholder="Memory Bus Width (b)" value="128"> bits
<br>

<label for="target-ram-bus-width">Target Memory Bus Width:</label>
<input id="target-ram-bus-width" type="number" placeholder="Memory Bus Width (b)" value="64"> bits
<br><br>

<table>
    <tr>
        <th>Memory Bus Width</th>
        <td id="compare-bus-bl"><span>0</span> bits</td>
        <td id="compare-bus-tg"><span>0</span> bits</td>
    </tr>
</table>

据我所知,我已经正确编码了。在我的示例中,基线为 128 位,目标为 64 位,应使用第一个 if 语句,因为目标总线宽度小于基线。

然而,结果却和我想象的完全不同。由于某种原因,JavaScript 似乎认为答案是 -64 位作为基线,+64 位作为目标。

我花了几天时间试图找出为什么会发生这种情况,甚至重新编码整个文件,但最终还是出现了同样的错误。有人能解释一下吗?我有一种感觉,有一些明显的事情我没有注意到。

最佳答案

我在进行任何数学运算之前解析了这些值。这看起来正确吗?

var bl_bus = parseInt( $('#baseline-ram-bus-width').val(), 10);
var tg_bus = parseInt( $('#target-ram-bus-width').val(), 10);

// Memory Bus Width
    if (tg_bus < bl_bus) {
        $('#compare-bus-bl span').text("+" + (bl_bus - tg_bus));
        $('#compare-bus-tg span').text((tg_bus - bl_bus));
    }
    if (tg_bus === bl_bus) {
        $('#compare-bus-bl span').text("Equal");
        $('#compare-bus-tg span').text("Equal");
    }
    if (tg_bus > bl_bus) {
        $('#compare-bus-bl span').text((tg_bus - bl_bus));
        $('#compare-bus-tg span').text("+" + (bl_bus - tg_bus));
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<label for="baseline-ram-bus-width">Baseline Memory Bus Width:</label>
<input id="baseline-ram-bus-width" type="number" placeholder="Memory Bus Width (b)" value="128"> bits
<br>

<label for="target-ram-bus-width">Target Memory Bus Width:</label>
<input id="target-ram-bus-width" type="number" placeholder="Memory Bus Width (b)" value="64"> bits
<br><br>

<table>
    <tr>
        <th>Memory Bus Width</th>
        <td id="compare-bus-bl"><span>0</span> bits</td>
        <td id="compare-bus-tg"><span>0</span> bits</td>
    </tr>
</table>

关于JavaScript 数学 — 得到错误答案 (128 - 64 = -64)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434165/

相关文章:

javascript - 如何在 IE8 中使用 Ajax 将图像发送到 .net Webservice?

javascript - 尝试清除大内容中双引号中的空白

jquery - 延迟触发 DOMContent

javascript - 仅在输入输入时运行 onclick 事件

python - 如何用Python画一个简单的Argand图?

javascript - 如何让按钮进行数学运算,然后使用 JS 显示它?

javascript - 可拖动的 div 移动 2px,即使它被捕捉到 10px

javascript - 使用以数组为键的 JavaScript Map,为什么我无法获取存储的值?

javascript - 尝试将 JavaScript 中的 for 循环更改为过滤方法单行

javascript - 如何使用 Jquery 从 "li "的属性中获取值?