Rumah >hujung hadapan web >tutorial js >Contoh analisis kemahiran JS ketepatan integer panjang problem_javascript

Contoh analisis kemahiran JS ketepatan integer panjang problem_javascript

WBOY
WBOYasal
2016-05-16 16:20:221290semak imbas

Artikel ini menganalisis masalah ketepatan integer panjang JS dalam contoh. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:

Penerangan masalah:

Terdapat fungsi skrip di latar belakang, yang boleh menulis skrip untuk memanggil kod Java secara dinamik

Salin kod Kod adalah seperti berikut:
importClass(com.ztgame.center.controller.api,P360ApiController);
var roleId = 10214734953631045; p360ApiController.notice(roleId, 4);
Skrip telah berjaya dilaksanakan, tetapi hasilnya berbeza daripada tetapan Orang ini tidak menerima e-mel

Anugerah cas semula log lihat telah dihantar roleId=10214734953631044;

Nombor ID watak ini kurang 1, ini....

Analisis masalah:

Ia sepatutnya menjadi isu ketepatan JS,

Ketepatan

Integer (tanpa titik perpuluhan atau tatatanda eksponen) boleh sehingga 15 digit.

Bilangan maksimum tempat perpuluhan ialah 17, tetapi aritmetik titik terapung tidak selalunya 100% tepat:

Ubah suai skrip


Salin kod Kod adalah seperti berikut:
var roleId = 10214734953631045; var output = roleId;

Output: 1.0214734953631044E16;


Ini bukan kesalahan JavaScript, dan bukan juga kesalahan Java Penukaran di atas kepada Long sememangnya roleId=10214734953631044;

Adakah itu mungkin?

Input kepada konsol javascript ialah semua rentetan, dan kemudian penukaran Integer.valueOf atau Long.valueOf dalam java dipanggil?


Penyelesaian:

Tulis kaedah penukaran umum untuk menghantar ID aksara kepada JavaScriptEngine sebagai rentetan


Salin kod Kod adalah seperti berikut:importClass(com.ztgame.common.util.StringKit); > importClass(com.ztgame.center.controller.api,P360ApiController);

Diisytiharkan sebagai rentetan


Salin kod Kod adalah seperti berikut:var roleId = "10214734953631045";
Dengan cara ini, apa yang JavaScriptEngine dapat ialah rentetan Sebenarnya, kerja itu dikendalikan oleh Java


Salin kod Kod adalah seperti berikut:p360ApiController.notice(StringKit.parseLong(roleId), 4);
Perlaksanaan berjaya, gunakan sahaja seperti ini~
Saya harap artikel ini akan membantu reka bentuk pengaturcaraan JavaScript semua orang.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn