前端知识点项目中遇到的问题精度缺失的问题

2022-06-23 10:56:22

在项目中你会遇到哪些问题呢

**

1.前后端联动的问题

**

①:id精确度丢失的问题

1. 产生原因:后端生成id的规则有很多种,但是有时后端生成的id是long类型的,那么传到前端的时候会转为Number类型,这个时候如果long类型并且它的长度超过了Number类型的最大长度的时候,就会发生精度缺失。
2. 解决方法:后端在传数据的时候对long数据进行处理,把他转成string类型,通过+''的方式

②:加减乘除精度缺失的问题
1. 产生原因:比如0.1+0.2=0.300000000000000
这其实不止加法,加减乘除都是一样的效果,是因为在计算的时候数据转成二进制再进行相加的,二带小数点的是浮点数,它的二进制是很多位的,所以导致相加的时候精确度丢失的问题。
2. 解决方法:(0.1100+0.2100)/100 = 0.3
这样即可,不过这只针对两位小数点的数呢,原理其实是把小数去掉。那如果我们有一组数据呢,小数点各不相同,那么我们就需要取小数点最多的数据为准,假设为n,乘以10的n次幂。
3. 具体实现呢,就是把浮点数转成字符串,然后再切割字符串,通过小数点把整数部分和小数本分分离开来,形成数组,再用数组【1】.length取得小数部分的长度,最后取最大length。这样在计算的时候就可以每个数*10的length次幂。
这里有个方法Math.pow(10,n)可以计算10的n次幂。
思路就是这样,没有提供代码,有机会再补充。
在这里插入图片描述

  • 作者:阳阳C
  • 原文链接:https://blog.csdn.net/qq_40409143/article/details/114611946
    更新时间:2022-06-23 10:56:22