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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(3)
Dec 23 Javascript
IE php关于强制下载文件的代码
Aug 23 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
Feb 15 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
javascript小数精度丢失的完美解决方法
May 31 Javascript
jQuery回到顶部的代码
Jul 09 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
axios 封装上传文件的请求方法
Sep 26 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.ini 中文版
2006/10/28 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
深入理解Python中字典的键的使用
2015/08/19 Python
python中的lambda表达式用法详解
2016/06/22 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Django框架视图介绍与使用详解
2019/07/18 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
dpn网络的pytorch实现方式
2020/01/14 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
python+requests接口自动化框架的实现
2020/08/31 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
JSF的标签库有哪些
2012/04/27 面试题
新浪微博实习心得体会
2014/01/27 职场文书
文科生自我鉴定
2014/02/15 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
制作部班长职位说明书
2014/02/26 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
公共场所禁烟标语
2014/06/25 职场文书
学习考察心得体会
2014/09/04 职场文书
怎样写辞职信
2015/02/27 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫