Heim > Web-Frontend > js-Tutorial > Beispielanalyse von JS-Long-Integer-Precision-Problem_Javascript-Fähigkeiten

Beispielanalyse von JS-Long-Integer-Precision-Problem_Javascript-Fähigkeiten

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-05-16 16:20:22
Original
1318 Leute haben es durchsucht

In diesem Artikel wird ein JS-Long-Integer-Präzisionsproblem anhand eines Beispiels analysiert. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Problembeschreibung:

Im Hintergrund gibt es eine Skriptfunktion, die Skripte schreiben kann, um Java-Code dynamisch aufzurufen

Code kopieren Der Code lautet wie folgt:
importClass(com.ztgame.center.controller.api,P360ApiController);
var RoleId = 10214734953631045; p360ApiController.notice(roleId, 4);
Das Skript wurde erfolgreich ausgeführt, aber die Ergebnisse unterschieden sich von den Einstellungen. Diese Person hat die E-Mail nicht erhalten

Die Belohnung für die Protokollaufladung wurde gesendet. RoleId=10214734953631044;

Die ID-Nummer dieses Charakters ist 1 weniger, dieser....

Problemanalyse:

Es sollte ein JS-Präzisionsproblem sein,

Genauigkeit

Ganzzahlen (ohne Dezimalpunkt oder Exponentenschreibweise) können bis zu 15 Ziffern lang sein.

Die maximale Anzahl an Dezimalstellen beträgt 17, Gleitkomma-Arithmetik ist jedoch nicht immer 100 % genau:

Skript ändern


Code kopieren Der Code lautet wie folgt:
var RoleId = 10214734953631045; var-Ausgabe = Rollen-ID;

Ausgabe: 1.0214734953631044E16;


Dies ist weder die Schuld von JavaScript noch von Java. Die obige Konvertierung in Long ist tatsächlich RoleId=10214734953631044;

Ist das möglich?

Die Javascript-Konsoleneingaben sind alle Zeichenfolgen und rufen dann die Konvertierung Integer.valueOf oder Long.valueOf in Java auf?


Lösung:

Schreiben Sie eine allgemeine Konvertierungsmethode, um die Zeichen-ID als Zeichenfolge an JavaScriptEngine zu übergeben


Code kopieren Der Code lautet wie folgt:importClass(com.ztgame.common.util.StringKit); > importClass(com.ztgame.center.controller.api,P360ApiController);

Als Zeichenfolge deklariert


Code kopieren Der Code lautet wie folgt:var roleId = "10214734953631045";
Auf diese Weise erhält JavaScriptEngine eine Zeichenfolge. Tatsächlich wird die Arbeit von Java erledigt


Code kopieren Der Code lautet wie folgt:p360ApiController.notice(StringKit.parseLong(roleId), 4);
Die Ausführung ist erfolgreich, verwenden Sie es einfach so~
Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Wo steht js?
Aus 1970-01-01 08:00:00
0
0
0
js-Dateicode nicht gefunden
Aus 1970-01-01 08:00:00
0
0
0
js addClass funktioniert nicht
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage