Cet article analyse un problème de précision des entiers longs JS dans un exemple. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Description du problème :
Il existe une fonction de script en arrière-plan, qui peut écrire des scripts pour appeler dynamiquement du code Java
Le script a été exécuté avec succès, mais les résultats étaient différents des paramètres. Cette personne n'a pas reçu l'e-mail
La récompense de recharge du journal a été envoyée roleId=10214734953631044;
Le numéro d'identification de ce personnage est 1 de moins, ceci....
Analyse du problème :
Cela devrait être un problème de précision JS,
Précision
Les entiers (sans point décimal ni notation d'exposant) peuvent comporter jusqu'à 15 chiffres.
Le nombre maximum de décimales est de 17, mais l'arithmétique à virgule flottante n'est pas toujours précise à 100 % :
Modifier le script
Sortie :
1.0214734953631044E16;
Ce n'est pas la faute de JavaScript, ni la faute de Java. La conversion ci-dessus en Long est bien roleId=10214734953631044;
Est-ce possible ?
Les entrées de la console javascript sont toutes des chaînes, puis appellent la conversion Integer.valueOf ou Long.valueOf en Java ?
Solution :
Écrivez une méthode de conversion générale pour transmettre l'ID de caractère à JavaScriptEngine sous forme de chaîne
J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.