国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:14:21
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JS長整型精度問題,實例分析了Java項目結合前臺js腳本出現的長整型精度問題與相應的解決方案,具有一定參考借鑒價值,需要的朋友可以參考下
 

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

問題描述:

后臺有一個腳本功能,可編寫腳本動態調用Java代碼

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

 

腳本執行成功,但運行結果與設定不一樣,此人沒有收到郵件

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

這角色ID數字少1,這....

問題分析:

應該是JS精度問題,

精度

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

修改腳本

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

 

輸出:
1.0214734953631044E16;

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

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

解決方案:

編寫一個通用的轉化方法 目的把角色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);

 

執行成功,先就這樣用吧~

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 洛隆县| 大化| 敖汉旗| 宝兴县| 德令哈市| 永靖县| 兴隆县| 太仓市| 福泉市| 灵宝市| 林周县| 土默特左旗| 偏关县| 杭州市| 丰顺县| 改则县| 阿城市| 凤山市| 铜鼓县| 泽库县| 大宁县| 张家川| 体育| 东港市| 阿鲁科尔沁旗| 松滋市| 宁津县| 宁波市| 建昌县| 古交市| 阿尔山市| 城市| 如东县| 南康市| 黎川县| 凌源市| 正安县| 崇明县| 贺兰县| 雷山县| 彭泽县|