问题:
一个小问题,前进一大步!
今天又遇到了后端返回的某个字段的数字太长,导致前端展示的时候数字变成了科学计数法,有些甚至直接展示错误;
原因:
典型的JS精度丢失问题,JS 中的Number类型只能安全地表示 -9007199254740991 (-(2^53-1))
和9007199254740991(2^53-1)
之间的整数,任何超出此范围的整数值都可能失去精度。
解决方案:
我们的项目是Vue + Axios,因此就用Axios举例了,其实操作很简单,别眨眼,看我操作!
1、首先安装 json-bigint 的插件
yarn add json-bigint
//或者
npm i json-bigint
2、接下来,在axios中这样配置就大功告成了
//request.js
import axios from 'axios';
import JSONbig from 'json-bigint';
const JSONbigToString = JSONbig({ storeAsString: true })
const service = axios.create({
timeout: 50_000,
baseURL: '',
transformResponse: [function (data) {
try {
//转换
return JSONbigToString.parse(data)
} catch (err) {
//转换失败就直接按原数据返回
return data;
}
}]
});