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

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-20 13:25:09
字體:
供稿:網(wǎng)友

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

問題描述:

后臺(tái)有一個(gè)腳本功能,可編寫腳本動(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è)定不一樣,此人沒有收到郵件

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

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

問題分析:

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

精度

整數(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)換呢?

解決方案:

編寫一個(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ì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 囊谦县| 霸州市| 临夏市| 靖州| 谢通门县| 肇庆市| 盐源县| 方城县| 宁南县| 淮南市| 保亭| 方城县| 施甸县| 合肥市| 惠水县| 黄陵县| 桓台县| 江西省| 博爱县| 吴桥县| 田林县| 星子县| 黑龙江省| 岳普湖县| 峨眉山市| 古蔺县| 黑河市| 阜阳市| 大英县| 尤溪县| 鄂托克旗| 成安县| 阳江市| 封开县| 措美县| 赤城县| 新郑市| 安阳县| 顺义区| 马山县| 阳西县|