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 相关文章推荐
跨域表单提交状态的变相判断代码
Nov 12 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
JS逆序遍历实现代码
Dec 02 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
解决webpack dev-server不能匹配post请求的问题
Aug 24 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
Nov 02 Javascript
jquery树形插件zTree高级使用详解
Aug 16 jQuery
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
phpmyadmin操作流程
2006/10/09 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
JavaScript中的其他对象
2008/01/16 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Django model update的多种用法介绍
2020/03/28 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
社会实践感言
2014/01/25 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
《我的信念》教学反思
2014/02/15 职场文书
产品售后服务承诺书
2014/05/21 职场文书
生日庆典策划方案
2014/06/02 职场文书
学校德育工作总结2015
2015/05/11 职场文书
2015年统战工作总结
2015/05/19 职场文书