JavaScript——数字超过精度导致数据有误

简介: JavaScript——数字超过精度导致数据有误

前言

接口返回的number类型的数据,超过了JavaScript中Number类型的限制,浏览器自动进行了转换;

console.log(7232167009634730040)

内容

以下内容来自Claude

JavaScript 的 Number 类型可以安全表示的最大整数是 2^53 - 1,也就是 9007199254740991。大于这个值的整数在 JavaScript 中会失去精度或变为 Infinity。例如:

js
> 9007199254740991  // 最大安全整数 
9007199254740991
> 9007199254740992  
9007199254740992  // 超出范围,已经失去精度
> 7232167009634730040 
Infinity  // 超出 Number 范围,变为 Infinity

所以当我们需要在 JavaScript 中处理一个超过 Number 类型范围的超大整数时,需要注意几点:

  1. API 端返回科学计数法格式的字符串,如 "7.23216700963473e19"。然后前端解析为 Number 使用。这可以保证数字的精度。
  2. API 直接返回字符串,如 "7232167009634730040"。前端检查是否可以转为 Number,如果不能则使用字符串处理。这样也可以避免精度丢失的问题。
  3. API 返回支持大数的类型,如 String、Decimal 等。然后前端引入对应库处理。
  4. 在前后端共同配合下,返回和解析合适格式的数值。API 端返回适合的格式,前端选择合适的方法解析。这可以避免直接使用 Number 类型导致的超出范围问题。

总的来说,当涉及到特别大的数字时,单靠 JavaScript 的 Number 类型是无法很好表示和处理的。这时我们需要前后端共同来实现对超大整数的支持,通过返回和解析科学计数法字符串或使用其他支持大数的类型等手段,来避开 Number 类型的限制,精确地运算和表示超大整数。

学无止境,谦卑而行.

目录
相关文章
|
JavaScript 前端开发
js实现数据的双向绑定
js实现数据的双向绑定
527 156
|
9月前
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1427 58
|
JavaScript 算法 前端开发
采招网JS逆向:基于AES解密网络数据
采招网JS逆向:基于AES解密网络数据
356 0
|
11月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
547 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
前端开发 JavaScript
JS-数据筛选
JS-数据筛选
152 7
|
JavaScript 数据安全/隐私保护
2024了,你会使用原生js批量获取表单数据吗
2024了,你会使用原生js批量获取表单数据吗
281 4
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
485 11
|
JSON JavaScript 数据格式
js实现更新数据
js实现更新数据
206 1