JS長(zhǎng)整型精度問(wèn)題實(shí)例分析
本文實(shí)例分析了一個(gè)JS長(zhǎng)整型精度問(wèn)題。分享給大家供大家參考。具體分析如下:
問(wèn)題描述:
后臺(tái)有一個(gè)腳本功能,可編寫(xiě)腳本動(dòng)態(tài)調(diào)用Java代碼
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)確:
修改腳本
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
importClass(com.ztgame.center.controller.api,P360ApiController);
申明為字符串
這樣JavaScriptEngine拿到的 就是字符串了 其實(shí)工作就是Java去處理了
執(zhí)行成功,先就這樣用吧~
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
Bootstrap Table實(shí)現(xiàn)定時(shí)刷新數(shù)據(jù)的方法
這篇文章主要介紹了Bootstrap Table實(shí)現(xiàn)定時(shí)刷新數(shù)據(jù)的方法,在這里小編比較推薦使用第二種方法,需要的朋友參考下吧2018-08-08淺談MUI框架中加載外部網(wǎng)頁(yè)或服務(wù)器數(shù)據(jù)的方法
下面小編就為大家分享一篇淺談MUI框架中加載外部網(wǎng)頁(yè)或服務(wù)器數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01JavaScript實(shí)現(xiàn)頁(yè)面實(shí)時(shí)顯示當(dāng)前時(shí)間的簡(jiǎn)單實(shí)例
這篇文章介紹了頁(yè)面實(shí)時(shí)顯示當(dāng)前時(shí)間的簡(jiǎn)單實(shí)例,有需要的朋友可以參考需要2013-07-07javascript模版引擎-tmpl的bug修復(fù)與性能優(yōu)化分析
在平時(shí)編碼中,經(jīng)常要做拼接字符串的工作,如把json數(shù)據(jù)用HTML展示出來(lái),以往字符串拼接與邏輯混在在一起會(huì)讓代碼晦澀不堪,加大了多人協(xié)作與維護(hù)的成本。而采用前端模板機(jī)制就能很好的解決這個(gè)問(wèn)題2011-10-10詳解wow.js中各種特效對(duì)應(yīng)的類(lèi)名
本篇文章主要介紹了wow.js中各種特效對(duì)應(yīng)的類(lèi)名 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09js新聞滾動(dòng) js如何實(shí)現(xiàn)新聞滾動(dòng)效果
JS實(shí)現(xiàn)新聞滾動(dòng)效果:滾動(dòng)頻率由setTimeout(F,#%18?10:3000)這個(gè)3000來(lái)控制,感興趣的朋友可以了解下哦2013-01-01Storage、cookie的用途和優(yōu)缺點(diǎn)比較
cookie的大小是受限制的,并且每次請(qǐng)求cookie都會(huì)被發(fā)送,浪費(fèi)寬帶,cookie還需要指定作用域,不可以跨域調(diào)用。cookie的作用是與服務(wù)器進(jìn)行交互,作為http規(guī)范的一部分存在,而webstorage僅僅是為了本地“存儲(chǔ)”數(shù)據(jù)而生。2023-07-07JS實(shí)現(xiàn)獲取數(shù)組中最大值或最小值功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)獲取數(shù)組中最大值或最小值功能,結(jié)合實(shí)例形式總結(jié)分析了javascript獲取數(shù)組最大值與最小值的三種常見(jiàn)操作技巧,需要的朋友可以參考下2019-03-03