Ich versuche, ein Low-Level-Performance-Vergleichstool für Grafikkarten zu erstellen, und ich habe alles gut, außer für den Busbreitenvergleich.JavaScript Math - Die falsche Antwort erhalten (128 - 64 = -64)?
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>
Soweit ich sagen kann, habe ich es richtig codiert. In meinem Beispiel, in dem die Basislinie 128 Bit und das Ziel 64 Bit beträgt, sollte die erste if
-Anweisung verwendet werden, da die Zielbusbreite geringer ist als die Basislinie.
Allerdings ist das Ergebnis völlig anders als ich es erwarte. Aus irgendeinem Grund scheint JavaScript zu glauben, dass die Antwort -64 Bit für die Baseline und +64 Bit für das Ziel ist.
Ich habe ein paar Tage damit verbracht, herauszufinden, warum das passiert ist, sogar soweit, dass ich die gesamte Datei rekodieren kann, aber mit dem gleichen Fehler endet. Kann jemand bitte etwas Licht darauf werfen? Ich habe das Gefühl, dass etwas offensichtlich ist, was ich nicht bemerke.
Haben Sie einen Debugger haben? – Amit
@Amit Ich habe den integrierten WebKit-Debugger von Opera verwendet. Es sind keine Fehler angegeben. – DylRicho
Hat dieser Debugger Haltepunkte? – mjohnsonengr