Long 类型 尾数舍去 的问题
Long
类型的数据在 JavaScript
中会出现尾数舍去的情况, 比如说 后端一个数为 864943364894076928
但是在 JavaScript
中为 864943364894076900
,尾数直接被舍去。
console.log(864943364894076928)
864943364894076900
遇见这种情况下,我们一般想到的是后端为我们处理,将 Long
类型转化为 String
类型,其实前端也是可以处理的。
JSONBig
是一个第三方插件库,它用于解决 Long
类型 尾数舍去的问题。
import JSONBig from 'json-bigint'
在 Vue
项目中,我们一般使用 Axios
处理请求,以 Axios
为例
axios.create({
transformResponse: [
(data) => { return JSONBig({ 'storeAsString': true }).parse(data) }
]
});
经过 JSONBig
的处理后,后端返回的所有 Number
类型的数据都将转换为 String
类型,这样就不会出现尾数舍去的问题了。
Double类型 科学计数法 的问题
后台返回的 Double
类型的数据在前端被转换成科学计数法,比如说 0.00000067
,在 JavaScript
中显示为 6.7e-7
,虽然说显示成了科学计数法,但是它的类型是 Number
类型。
console.log(0.00000067)
6.7e-7
typeof 6.7e-7
"number"
既然是 Number
类型,我们就可以使用 Number
的方法进行处理,处理科学计数法的显示问题一般使用 toFixed(n)
来处理。
6.7e-7.toFixed(8)
"0.00000067"
具体保留几位小数根据业务需求进行自由选择,只要达到预期的效果就好了。