JS长整型精度问题实例分析


Posted in Javascript onJanuary 13, 2015

本文实例分析了一个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程序设计有所帮助。

Javascript 相关文章推荐
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
Js获取数组最大和最小值示例代码
Oct 29 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
javascript正则表达式基础知识入门
Apr 20 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
jQuery选择器基础入门教程
May 10 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
JS新手入门数组处理的实用方法汇总
Apr 07 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 #Javascript
javascript面向对象之定义成员方法实例分析
Jan 13 #Javascript
jQuery大于号(>)选择器的作用解释
Jan 13 #Javascript
javascript面向对象之this关键词用法分析
Jan 13 #Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 #Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 #Javascript
javascript面向对象之对象的深入理解
Jan 13 #Javascript
You might like
让你的PHP同时支持GIF、png、JPEG
2006/10/09 PHP
浅谈php提交form表单
2015/07/01 PHP
php实现的操作excel类详解
2016/01/15 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python中单例模式总结
2018/02/20 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
会计助理的岗位职责
2013/11/29 职场文书
绩效考核实施方案
2014/03/18 职场文书
防灾减灾标语
2014/10/07 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
德能勤绩工作总结
2015/08/11 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android