2017-04-06 11 views
2

Okay, das ist mein Quellcode.Warum bekomme ich irgendwo die falsche ID?

var newRealID = <? print($_SESSION["mySteamID"]) ?>; 
alert("MY ID = " + <? print($_SESSION["mySteamID"]) ?>); 

und wenn ich die Seite oder den Quellcode untersuchen ich den folgenden Code

var newRealID = 76561198061310076; alert(76561198061310076);

erhalten, die die korrekte Ausgabe ist jedoch, ich die Warnmeldung erhalten visuell in meinem Chrom ist :

MY ID = 76561198061310080

ich habe keine Ahnung, absolut und ich habe seit Ewigkeiten hier stecken geblieben ..

Antwort

4

Das Problem ist, dass der Wert, den Sie verwenden sind jenseits der MAX_SAFE_INTEGER ist die JS erlaubt:

console.log(76561198061310076); 
 
console.log(Number.MAX_SAFE_INTEGER)

Aus diesem Grund Sie die Nummer auf eine Floating-Point dazu gezwungen wird und wieder zurück. Dies führt wiederum zu Rundungsfehlern, die für die Diskrepanz verantwortlich sind, die Sie im Ergebnis sehen.

Angenommen, Sie nicht mathematische Operationen auf den Wert verwenden müssen, können Sie es in eine Zeichenfolge in der Ausgabe umwandeln könnte:

var newRealID = '<? print($_SESSION["mySteamID"]) ?>'; 
+0

danke für den hilfe mann! : D – user3187651

1

Javascript kann nicht Zahlen umgehen, dass groß, so dass Sie es als eine passieren könnte string stattdessen so

var newRealID = '<? print($_SESSION["mySteamID"]) ?>'; 
alert("MY ID = " + newRealID); 
+0

Aber ich denke @RoryMcCrossan Antwort verdient wahrscheinlich, die akzeptierte Antwort zu sein, wie ich sehe, hat er jetzt das gleiche Work-around der Weitergabe der Nummer als String als auch hinzugefügt. – RiggsFolly

+0

Ja, ich habe das erst gesehen, als ich diese Website zum ersten Mal benutzt habe. Ich kann eine Antwort in 2 Minuten erlauben :) – user3187651