国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。


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

圖片精選

主站蜘蛛池模板: 台北市| 定州市| 五家渠市| 上栗县| 安乡县| 关岭| 沙田区| 启东市| 古田县| 清新县| 乾安县| 徐州市| 永清县| 久治县| 来宾市| 黎川县| 永清县| 金溪县| 三都| 龙山县| 康乐县| 常宁市| 红桥区| 阳泉市| 厦门市| 晋中市| 开阳县| 交口县| 攀枝花市| 德安县| 长泰县| 泊头市| 丘北县| 衡阳市| 津南区| 闻喜县| 台南市| 屯昌县| 墨江| 团风县| 卢氏县|