vue项目中大数的处理

1,900 阅读1分钟
现象

 通过ajax请求回来的数据在response和preview两种状态显示的id是不同的

原因
response中的看到的数据格式其实是字符串(ajax请求回来的数据本质上是字符串格式)
preview其实是用了JSON.Parse(字符串) 给我们做美化(格式化)这个转换过程中,一般不会出问题,但是,如涉及大数(一个很大的整数,超过了javascript最大的处理能力)就会产生转换精度丢失------- 就产生了错误了

解决 使用json-bigint

安装 npm i json-bigint
引入 import JSONbig from 'json-bigint'

简单应用实例

const str = '{ "id": 1253585734669959168 }'
在不适用大数处理的情况下,用JSON.parent会产生精度丢失 console.log(JSON.parse(str))==> 1253585734669959200

如图所示:

使用json-bigint 它会把超出 JS 安全整数范围的数字转为一种类型为 BigNumber 的对象

我们在使用的时候需要把这个 BigNumber.toString() 就能得到原来正确的数据了
// 它会把超出 JS 安全整数范围的数字转为一种类型为 BigNumber 的对象// console.log(JSONbig.parse(str)) ==> {id: BigNumber}// console.log(JSONbig.parse(str).id) ==> BigNumber{s: 1, e: 18, c: Array(2)}// console.log(JSONbig.parse(str).id.c.toString()) ==> 12535,85734669959168
console.log(JSONbig.parse(str).id.toString())