HarmonyOS 鸿蒙Next 如何避免数字精度在Http传输过程中精度的丢失?

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何避免数字精度在Http传输过程中精度的丢失?

我们传输的数据结构中涉及大量高精度(double)数据. 但是有些数据在后端传入时的精度值跟在客户端接收到的精度值时常出现非常微小的误差. 为此也出现了不少由此引发的问题.

想请教一下社区的大佬有没有什么办法可以规避这个问题? 如何在网络中传输高精度数据时避免精度的丢失?

3 回复

可以试下如下
1.试下引入三方开源库json-bigint,具体参考链接:
https://ohpm.openharmony.cn/#/cn/detail/[@ohmos](/user/ohmos)%2Fjson-bigint
2.使用axios.request中加transformResponse处理响应的数据,对应的接收字段用bigint类型接收,比如:

axios.request<InfoModel, AxiosResponse<InfoModel>, IdModel>({
  url: this.getUrl,
  method: 'get',
  connectTimeout: this.connectTimeout,
  transformResponse:(res: ESObject): ESObject=>{
    return JSONbig.parse(res)
  }
}) .then((res: AxiosResponse<InfoModel>) => {}) 
转成字符串

在HarmonyOS鸿蒙Next中,避免数字精度在Http传输过程中丢失,可以采取以下措施:

首先,对于大整数,由于JavaScript的JSON.parse函数在解析时可能会因双精度浮点数的精度限制导致精度丢失,推荐使用string处理或使用json-bigint第三方库来处理。在发送数字前,将其转换为字符串格式,接收端再按需转换为合适的数字类型(如BigInt),确保精度无损。

其次,检查Http传输过程中的数据类型和表示范围,确保数字在传输过程中不会被错误地截断或四舍五入。

此外,还需考虑网络协议和数据编码方式。HarmonyOS鸿蒙Next支持多种先进的加密算法和协议,如SSL/TLS,可以确保数据在传输过程中的安全性和完整性。使用这些协议可以进一步降低数字精度丢失的风险。

最后,确保接收端和发送端的数字处理逻辑一致,避免因处理逻辑不一致而导致的精度丢失问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部