JavaScript Number精度丢失问题的解决方案

 更新时间:2025年11月18日 09:48:47   作者:OlahOlah  
在前后端交互中,常常需要传递 Long 类型的 ID,但 JavaScript 的 Number 类型基于 IEEE 754 标准,最大只能精确表示 15 到 17 位的整数,超过这个范围会丢失精度,为了避免这种问题,本文介绍如何处理超大数字,需要的朋友可以参考下

问题描述

JavaScript 的 Number 类型的最大安全整数是 9007199254740991,超过这个值的数字会出现精度丢失。例如,1234567890123456789 会被转为 1234567890123456700,导致错误。

问题的根源

Long 类型是许多后端语言(如 Java)用于表示大整数的类型,而 JavaScript 的 Number 类型不能正确表示如此大的数字。

// 后端:Java
Long longId = 1234567890123456789L;

前端接收到该 ID 后,会出现精度丢失:

// 前端:JavaScript
let itemId = 1234567890123456789;  // 错误,精度丢失
console.log(itemId);  // 输出:1234567890123456700

解决方案

Long 类型 ID 转为字符串,并确保前后端都使用字符串形式传递 ID,避免精度丢失。

  • 后台:将 Long 类型 ID 转为字符串。
  • 前端:接收 ID 时保持字符串类型,避免转换为 Number

实施方案

后端(Java 示例):

@RestController
public class ItemController {
    @GetMapping("/items/{id}")
    public ResponseEntity<ItemVO> getItem(@PathVariable Long id) {
        Item item = itemService.getItemById(id);
​
        ItemVO itemVO = new ItemVO();
        itemVO.setId(String.valueOf(id));
​
        return ResponseEntity.ok(itemVO);
    }
}

前端(JavaScript 示例):

// 使用 axios 请求 API
axios.get('/api/items/1234567890123456789')
  .then(response => {
    const itemId = response.data.id;  // 保持为字符串
    console.log(itemId);  // 输出原始字符串
  })
  .catch(error => {
    console.error('Error:', error);
  });

到此这篇关于JavaScript Number精度丢失问题的解决方案的文章就介绍到这了,更多相关JavaScript Number精度丢失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript中Map和Set数据结构使用方法详解

    JavaScript中Map和Set数据结构使用方法详解

    这篇文章主要介绍了JavaScript中Map和Set数据结构使用方法的相关资料,Map是一种键值对集合,支持任意类型的键和值,保留插入顺序,并提供多种遍历和操作方法,Set是一种唯一值集合,通过哈希算法保证唯一性,提供添加、删除、检查元素的方法,需要的朋友可以参考下
    2025-03-03
  • js加减乘除精确运算方法实例代码

    js加减乘除精确运算方法实例代码

    这篇文章主要给大家介绍了关于js加减乘除精确运算方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Div自动滚动到末尾的代码

    Div自动滚动到末尾的代码

    非常不错的思路,自动滚动到div末尾
    2008-10-10
  • js实现按钮进行某行上移下移

    js实现按钮进行某行上移下移

    这篇文章主要为大家详细介绍了js实现按钮进行某行上移下移,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 小程序自定义日历效果

    小程序自定义日历效果

    这篇文章主要为大家详细介绍了小程序自定义日历效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • JavaScript 语句之常用 for 循环详解

    JavaScript 语句之常用 for 循环详解

    这篇文章主要介绍了JavaScript 语句之常用 for 循环,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 微信小程序身份证验证方法实现详解

    微信小程序身份证验证方法实现详解

    这篇文章主要介绍了微信小程序身份证验证方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 关于JavaScript命名空间的一些心得

    关于JavaScript命名空间的一些心得

    这篇文章主要介绍了关于JavaScript命名空间的一些心得,分别给出了顶级、多级命名空间的例子,需要的朋友可以参考下
    2014-06-06
  • JS实现li标签的删除

    JS实现li标签的删除

    这篇文章主要为大家详细介绍了JS实现li标签的删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 利用js来实现缩略语列表、文献来源链接和快捷键列表

    利用js来实现缩略语列表、文献来源链接和快捷键列表

    本文主要对利用js来实现缩略语列表、文献来源链接和快捷键列表的方法进行详细分析介绍。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12

最新评论