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创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
JavaScript函数的4种调用方法详解
Apr 22 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
javascript实时显示当天日期的方法
May 20 Javascript
js字符串截取函数slice、substring和substr的比较
May 17 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
最省空间的计数器
2006/10/09 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
JavaScript中闭包的详解
2017/04/01 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
python rsa 加密解密
2017/03/20 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
python使用建议与技巧分享(一)
2020/08/17 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
python 装饰器的基本使用
2021/01/13 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
公务员的自我鉴定
2013/10/26 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
中式婚礼主持词
2014/03/13 职场文书
厕所文明标语
2014/06/11 职场文书
工厂见习报告范文
2014/10/31 职场文书
公司开除员工通知
2015/04/22 职场文书
Golang map映射的用法
2022/04/22 Golang