接口返回数字 为  

1067722413883658240  正确 

但是 拿到后打印出来的结果是
1067722413883658200  错误

原因是数字过长被四舍五入了

解决思路   

1 (放弃)尝试让后台返回时 改成string    后台拒绝 且 沟通中一直表示传的是string   很是尴尬 

2 (放弃)找uni 官网请求插件  主要想找一个带有拦截器的  因为考虑 在拦截器里拿到的应该是 精度正确的    翻看了3,4个插件  发现底层还是uni.request 都是二次封装的  拦截器   所以   

3 (实现)再次翻看uni.reques文档    注意到  dataType 参数   表示返回时自动进行 json.parse处理  所以猜测是这个原因   于是想尝试 换个参数   但文档中并未提到  于是 先将参数注释  结果失败   后尝试 参数改为  string  发现  成功 

4 故 单独封装了一个请求 (也可以考虑统一封装后 通过参数进行设定)  将datatype参数设置为sting后  进行了replace 替换 后  再次手动转成json  代码如下

 let data = JSON.parse(dataStr.replace(/gridId\":(\d+)/g,"gridId\":\"$1\""));

replace 是将 里面的数字 前后 添加  引号 后 进行 json.parse

记录上述过程 是防止 其他人  尝试一些已经尝试过且失败的方法  在这里做个记录

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐