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 相关文章推荐
fckeditor 获取文本框值的实现代码
Feb 09 Javascript
jQuery 使用手册(三)
Sep 23 Javascript
取选中的radio的值
Jan 11 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
js+css实现上下翻页相册代码分享
Aug 18 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
详解用vue.js和laravel实现微信授权登陆
Jun 23 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
详解JavaScript 的执行机制
Sep 18 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP 和 COM
2006/10/09 PHP
桌面中心(四)数据显示
2006/10/09 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
php经典算法集锦
2015/11/14 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python语言描述连续子数组的最大和
2018/01/04 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
python 实现屏幕录制示例
2019/12/23 Python
python3访问字典里的值实例方法
2020/11/18 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
法制宣传月活动方案
2014/05/11 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
团结主题班会
2015/08/13 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书