日期: 2022-09-20 16:00:11 浏览数:4

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
常州网站制作|常州网站推广专家_常州网站建设服务中心

常州,简称“常”,别称龙城,是江苏省地级市,国务院批复确定的中国长江三角洲地区中心城市之一、先进制造业基地和文化旅游名城 [1] 。截至2018年,全市下辖5个区、代管1个县级市,总面积4385平方千米。 [2-4] 2020年,常州市常住人口527.8万, [69] 地区生产总值7805.3亿元。 [8]
常州地处江苏省南部、长三角腹地,东与无锡相邻,西与南京、镇江接壤,南与无锡、安徽宣城交界 [5] 。常州市属长江下游平原,兼有高沙平原和山丘湖圩,属于北亚热带季风气候。 [6] 常州是一座有着3200多年历史的文化古城;春秋末期(前547年),吴王寿梦第四子季札封邑延陵,开始了长达2500多年有准确纪年和确切地名的历史。西汉高祖五年(前202年)改称毗陵。西晋武帝太康二年(281年),改置毗陵郡。自此,常州历朝均为郡、州、路、府治所,曾有过延陵、毗陵、毗坛、晋陵、长春、尝州、武进等名称,隋文帝开皇九年(589年)始有常州之称 [7] 。
常州有圩墩新石器遗址、春秋淹城、天宁寺、红梅阁、文笔塔、藤花旧馆、舣舟亭、太平天国护王府、瞿秋白纪念馆、中华恐龙园、天目湖、金坛茅山风景区、嬉戏谷、东方盐湖城、华夏宝盛园等景点。 [7]
想必,很多人都遇到过关于后端返回数据中的大数字问题。明明你写的代码没有问题,然后后台的接口也没问题,但是你调用接口返回的数据就有误。 JavaScript 能够准确表示的整数范围在-2^53到 2^53之间(不含两个端点),超过这个范围,无法精确表示这个值,这使得 JavaScript 不适合进行科学和金融方面的精确计算。这个问题主要是后端数据类型是long类型时。数字精准度问题。
Math.pow(2, 53) // 90071992547409929007199254740992 // 90071992547409929007199254740993 // 9007199254740992Math.pow(2, 53) === Math.pow(2, 53) + 1// true
超过2的53次方之后,就不精准了。
ES6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1// trueNumber.MAX_SAFE_INTEGER === 9007199254740991// trueNumber.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER// trueNumber.MIN_SAFE_INTEGER === -9007199254740991// true
上面代码中,可以看到 JavaScript 能够精确表示的极限。
关于如何解决这个问题,方案有两种。
后端解决,后端将数字转成字符串。这个对于前端来说是最简单的了,因为超长的数字在浏览器中确实存在展示精度问题,这个后端解决也是领所应当。
前端通过json-bigint 是一个第三方包来解决
npm i json-bigint
下面是使用它的一个简单示例。
const jsonStr = '{ "art_id": 1245953273786007552 }'console.log(JSON.parse(jsonStr)) // 1245953273786007600// JSON.stringify()// JSONBig 可以处理数据中超出 JavaScript 安全整数范围的问题console.log(JSONBig.parse(jsonStr)) // 把 JSON 格式的字符串转为 JavaScript 对象// 使用的时候需要把 BigNumber 类型的数据转为字符串来使用console.log(JSONBig.parse(jsonStr).art_id.toString()) // 1245953273786007552console.log(JSON.stringify(JSONBig.parse(jsonStr)))console.log(JSONBig.stringify(JSONBig.parse(jsonStr))) // 把 JavaScript 对象 转为 JSON 格式的字符串json-bigint 会把超出 JS 安全整数范围的数字转为一个 BigNumber 类型的对象,对象数据是它内部的一个算法处理之后的,我们要做的就是在使用的时候转为字符串来使用。
我们可以结合axiso来使用,Axios 提供了自定义处理原始后端返回数据的 API:transformResponse 。
import axios from 'axios'import jsonBig from 'json-bigint'var json = '{ "value" : 9223372036854775807, "v2": 123 }'console.log(jsonBig.parse(json))const request = axios.create({
baseURL: '你接口的基础路径', // 接口基础路径
// transformResponse 允许自定义原始的响应数据(字符串)
transformResponse: [function (data) {
try {
// 如果转换成功则返回转换的数据结果
return jsonBig.parse(data)
} catch (err) {
// 如果转换失败,则包装为统一数据格式并返回
return {
data }
}
}]})export default request把axiso封装一下,用来处理此类的大数据数值问题。
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)