亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS長(zhǎng)整型精度問(wèn)題實(shí)例分析

 更新時(shí)間:2015年01月13日 10:46:18   投稿:shichen2014  
這篇文章主要介紹了JS長(zhǎng)整型精度問(wèn)題,實(shí)例分析了Java項(xiàng)目結(jié)合前臺(tái)js腳本出現(xiàn)的長(zhǎng)整型精度問(wèn)題與相應(yīng)的解決方案,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例分析了一個(gè)JS長(zhǎng)整型精度問(wèn)題。分享給大家供大家參考。具體分析如下:

問(wèn)題描述:

后臺(tái)有一個(gè)腳本功能,可編寫(xiě)腳本動(dòng)態(tài)調(diào)用Java代碼

復(fù)制代碼 代碼如下:
importClass(com.ztgame.center.controller.api,P360ApiController); 
var roleId = 10214734953631045; 
p360ApiController.notice(roleId, 4);

腳本執(zhí)行成功,但運(yùn)行結(jié)果與設(shè)定不一樣,此人沒(méi)有收到郵件

查看日志  recharge award has been sent. roleId=10214734953631044;

這角色I(xiàn)D數(shù)字少1,這....

問(wèn)題分析:

應(yīng)該是JS精度問(wèn)題,

精度

整數(shù)(不使用小數(shù)點(diǎn)或指數(shù)計(jì)數(shù)法)最多為 15 位。
小數(shù)的最大位數(shù)是 17,但是浮點(diǎn)運(yùn)算并不總是 100% 準(zhǔn)確:

修改腳本

復(fù)制代碼 代碼如下:
var roleId = 10214734953631045; 
var output = roleId;

輸出:
1.0214734953631044E16;

這不是JavaScript的錯(cuò),也不是Java的錯(cuò),上面轉(zhuǎn)成Long 確實(shí)是 roleId=10214734953631044;

可不可以那樣呢?
javascript控制臺(tái)輸入的都是字符串,然后調(diào)用java里的Integer.valueOf或者Long.valueOf轉(zhuǎn)換呢?

解決方案:

編寫(xiě)一個(gè)通用的轉(zhuǎn)化方法 目的把角色I(xiàn)D用字符串傳到JavaScriptEngine

復(fù)制代碼 代碼如下:
importClass(com.ztgame.common.util.StringKit); 
importClass(com.ztgame.center.controller.api,P360ApiController);

申明為字符串

復(fù)制代碼 代碼如下:
var roleId = "10214734953631045";

這樣JavaScriptEngine拿到的 就是字符串了 其實(shí)工作就是Java去處理了
復(fù)制代碼 代碼如下:
p360ApiController.notice(StringKit.parseLong(roleId), 4);

執(zhí)行成功,先就這樣用吧~

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論