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"

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


版权声明:本文为qq_39157944原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。