欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS長整型精度問題實例分析

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

本文實例分析了一個JS長整型精度問題。分享給大家供大家參考。具體分析如下:

問題描述:

后臺有一個腳本功能,可編寫腳本動態(tài)調(diào)用Java代碼

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

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

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

這角色ID數(shù)字少1,這....

問題分析:

應該是JS精度問題,

精度

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

修改腳本

復制代碼 代碼如下:
var roleId = 10214734953631045; 
var output = roleId;

輸出:
1.0214734953631044E16;

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

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

解決方案:

編寫一個通用的轉(zhuǎn)化方法 目的把角色ID用字符串傳到JavaScriptEngine

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

申明為字符串

復制代碼 代碼如下:
var roleId = "10214734953631045";

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

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

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

相關(guān)文章

最新評論