Ok, ich bin kein Programmierer, ich habe keine Schule, aber ... Ich kann nicht herausfinden, warum diese kleine Operation einen NaN-Wert liefert!Javascript gibt einen NaN-Wert nach einer mathematischen Operation zurück
Ich habe diese var am Anfang
// Varialbes for simulation purpose
var Simulation = false;
var FakeCapital = 0;
var PercentOfTotal = 100;
// Variables
var Capital = (engine.getBalance()/100).toFixed(2);
var UsableBalance = Math.floor(PercentOfTotal/100 * Capital);
var StartingBalance = UsableBalance;
if (FakeCapital > 0 && Simulation) {
Capital = FakeCapital;
UsableBalance = Math.floor(PercentOfTotal/100 * Capital);
StartingBalance = UsableBalance;
}
Also, wenn ich die similation var aktivieren und wenn ich ein anderes Kapital verwenden möchten, verwenden Sie das Skript das fakecapital mein Skript zu testen.
Hier werden alle Arbeiten, aber ich denke, dass hier das Problem, speziell die UsableBalance = Math.floor(PercentOfTotal/100 * Capital);
Denn wenn das Skript laufen: Wenn ich nicht die Simulation verwenden, alles geht nach rechts Wenn ich die Simulation verwenden und die gefälschtes Kapital, alles geht richtig
Aber wenn ich die Simulation benutze und ich das reale Kapital verwenden möchte, ist die UsableBalance var seltsam, nicht sofort, aber wenn das Skript läuft! Ich versuche, besser zu erklären
Nehmen wir an, dass ich die Simulationsphase verwenden und ich möchte die wirkliche Hauptstadt
Ihre Ballance bedienen: 87.26 Bits. Ich verwende: 87 Bits für diese Sitzung als Ihre Anfrage.
hier alles in Ordnung, aber dieser Code:
if (TemporaryLoss <= 0) {
Capital += LastProfit;
UsableBalance = Math.floor((PercentOfTotal/100) * Capital);
TemporaryLoss = 0;
}
Return dies:
TemporaryLoss: 0
Capital: 87.26
LastProfit: 1.0299999999999998
PercentOfTotal: 100
Capital: 87.261.0299999999999998
Warum die Mathematik diese seltsame Zahl zurückgeben? Wie eine Verkettung von 2 Zahlen? Scheint, dass das Skript die var wie einen Text und nicht wie eine Zahl verwendet.
Irgendeine Idee?
Sie müssen möglicherweise 'parseInt' oder' parseFloat' verwenden –
Es lohnt sich, einen Schritt zurückzutreten und darüber nachzudenken, wie Sie mit Währungswerten und Genauigkeitsverlust aufgrund von Gleitkomma-Konvertierungen umgehen (besonders wenn Sie Math.floor verwenden)() 'wie Sie hier sind. [Weitere Informationen finden Sie [die Diskussion hier] (http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript) Im Allgemeinen ist es auch sinnvoll, Währungswerte in 'Cents' (oder was auch immer der niedrigste mögliche Währungswert ist) oder als Strings zu behandeln, um die meisten grundlegenden Präzisionsprobleme zu umgehen. – Andrew
Mögliche Duplikate von [Javascript - NaN] (http: // stackoverflow.com/questions/25747520/javascript-nan) – rockerest