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

  • Post author:
  • Post category:其他


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

**



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次幂。

思路就是这样,没有提供代码,有机会再补充。

在这里插入图片描述



版权声明:本文为qq_40409143原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。