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 checkbox全选、取消全选实现代码
Mar 05 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
js将滚动条滚动到指定位置的简单实现方法
Jun 25 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
Dec 07 Javascript
详解Vue方法与事件
Mar 09 Javascript
AngularJs导出数据到Excel的示例代码
Aug 11 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
laravel 数据验证规则详解
2019/10/23 PHP
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
电脑教师的教学自我评价
2013/11/26 职场文书
计算机专业求职信
2014/06/02 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
工程部岗位职责范本
2015/04/11 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
Mysql Online DDL的使用详解
2021/05/20 MySQL
Python如何将list中的string转换为int
2022/07/15 Ruby