JavaScript 中 Long 类型 尾数舍去 和 Double类型 科学计数法 的问题

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"

具体保留几位小数根据业务需求进行自由选择,只要达到预期的效果就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值