在项目中你会遇到哪些问题呢
**
1.前后端联动的问题
**
①:id精确度丢失的问题
1.
产生原因:后端生成id的规则有很多种,但是有时后端生成的id是long类型的,那么传到前端的时候会转为Number类型,这个时候如果long类型并且它的长度超过了Number类型的最大长度的时候,就会发生精度缺失。
2.
解决方法:后端在传数据的时候对long数据进行处理,把他转成string类型,通过
+''
的方式
②:加减乘除精度缺失的问题
1.
产生原因:比如0.1+0.2=0.300000000000000
这其实不止加法,加减乘除都是一样的效果,是因为在计算的时候数据转成二进制再进行相加的,二带小数点的是浮点数,它的二进制是很多位的,所以导致相加的时候精确度丢失的问题。
2.
解决方法:(0.1
100+0.2
100)/100 = 0.3
这样即可,不过这只针对两位小数点的数呢,原理其实是把小数去掉。那如果我们有一组数据呢,小数点各不相同,那么我们就需要取小数点最多的数据为准,假设为n,乘以10的n次幂。
3.
具体实现呢,就是把浮点数转成字符串,然后再切割字符串,通过小数点把整数部分和小数本分分离开来,形成数组,再用数组【1】.length取得小数部分的长度,最后取最大length。这样在计算的时候就可以每个数*10的length次幂。
这里有个方法Math.pow(10,n)可以计算10的n次幂。
思路就是这样,没有提供代码,有机会再补充。