VUE - bigint解决前端精度丢失的问题
VUE - bigint解决前端精度丢失的问题
问题描述
java后端long类型的范围
- 
-2^63~2^63,即:-9223372036854775808~9223372036854775807,它是19位的。 
- 
这个数字可以通过方法获得:Long.MAX_VALUE、Long_MIN_VALUE。 
前端JS的数字类型的范围
- 
-2^53~2^53,即:-9007199254740991~9007199254740991,它是16位的。 
- 
这个数字可以通过方法获得:Number.MAX_SAFE_INTEGER、Number.MIN_SAFE_INTEGER。 
结论
可见,Java后端的Long宽度大于前端的。雪花算法一般会生成18位或者19位宽度的数字,那么这时就会出问题。
1. 安装 插件
yarn add big-int
yarn add json-bigint
yarn add bignumber.js
2. 使用
var bigInt = require("big-int");
 let senceId = bigInt(a.SenceIdString);
import BigNumber from 'bignumber.js'; let senceId= new BigNumber(10000000008214144);
axios接口调用返回值转换
import JSONBIG from "json-bigint"; export async function api_GetFilesWithAuth(authStr) { const res = await axios({ url: `${assistURL}/api/TFiles/GetFilesWithAuthAsync`, methods: 'get', params: { authStr: authStr, }, transformResponse: [ function (data) { // 对 data 进行任意转换处理 debugger; const jsonTruns = JSONBIG({ // storeAsString: true, }); return jsonTruns.parse(data); }, ], }); return res; }
end.
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号