JS长整型精度问题实例分析

 更新时间:2015年01月13日 10:46:18   投稿:shichen2014  
这篇文章主要介绍了JS长整型精度问题,实例分析了Java项目结合前台js脚本出现的长整型精度问题与相应的解决方案,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例分析了一个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编程开发中的五个实用小技巧

    下面的5点说明确实不错,提高性能与可读性,大家可以根据需要选择使用。
    2010-07-07
  • JS设计模式之中介者模式使用方法详解

    JS设计模式之中介者模式使用方法详解

    JavaScript中介者模式是一种行为型设计模式,用于降低多个对象之间的耦合性,在中介者模式中,多个对象之间不直接相互通信,而是通过中介者进行通信, 本文就来给大家详细的介绍一下JS设计模式之中介者模式使用方法,需要的朋友可以参考下
    2023-08-08
  • JS前端分片上传大文件步骤(支持1G以上的超大文件)

    JS前端分片上传大文件步骤(支持1G以上的超大文件)

    当前端在开发过程中遇到上传文件需求,如果是小文件之类的可以正常按上传流程处理,但是当遇到上传大文件需求时就需要分片上传,这篇文章主要给大家介绍了关于JS前端分片上传大文件(支持1G以上的超大文件)的相关资料,需要的朋友可以参考下
    2024-08-08
  • 微信小程序引用iconfont图标的方法

    微信小程序引用iconfont图标的方法

    这篇文章主要介绍了微信小程序引用iconfont图标的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 关于js对textarea换行符的处理方法浅析

    关于js对textarea换行符的处理方法浅析

    这篇文章主要给大家介绍了关于js对textarea换行符的处理方法的相关资料,文中通过示例代码介绍地方非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • js 对象是否存在判断

    js 对象是否存在判断

    js 对象是否存在,然后进行下一步的操作。
    2009-07-07
  • javascript中数组中求最大值示例代码

    javascript中数组中求最大值示例代码

    数组如何求最大值,想必很多的朋友都不会吧,本文为大家介绍下javascript中数组是如何求最大值的,感兴趣的朋友不要错过
    2013-12-12
  • JavaScript实现H5接金币功能(实例代码)

    JavaScript实现H5接金币功能(实例代码)

    这篇文章主要介绍了JavaScript实现H5接金币功能,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • javascript获取当前鼠标坐标的方法

    javascript获取当前鼠标坐标的方法

    这篇文章主要介绍了javascript获取当前鼠标坐标的方法,可针对不同浏览器获取鼠标的坐标位置,是非常实用技巧,需要的朋友可以参考下
    2015-01-01
  • JavaScript实现瀑布流布局的代码分享

    JavaScript实现瀑布流布局的代码分享

    不知道大家在线上购物的时候有没有发现到,自己逛起来根本就停不下来,越往下翻越是觉得就会出现需要的东西,这就是很多电商公司都在使用的瀑布流布局。本文就来用JS实现这一布局,需要的可以参考一下
    2023-04-04

最新评论