前后端分离,接口调用大数字精度丢失问题的解决方案

421 阅读1分钟

问题描述:使用ajax调用后端接口拿到的long类型的数字会导致精度丢失,原因是在javascript中超长了,所以显示会丢失精度

解决方案:借用第三方插件,例如:json-bigint

第一步:安装

npm i json-bigint -S

在axios中添加

import jsonbigint from 'json-bigint'

axios.create({ 
  withCredentials: true, //允许浏览器携带cookie
  baseURL: import.meta.env.MODE === "development" ? "/api" : (window as any).config.API_BASE_URL || import.meta.env.VITE_API_BASE_URL,
  timeout: 30000,
  transformResponse: res => {
    return jsonbigint.parse(res) // 这里是关键一步
  }
});

需要注意的是,在拿到值以后,如果其它接口需要传参时,需要转成string类型再传过去,否则依然会导致精度丢失。