问答题
这个和数据存储的方式有关系,浮点数是以双精度64位存储的,这64位由三部分组成,第1位是符号位,中间11位是指数位,最后52位为尾数位,浮点数在计算时都会转成二进制 ,问题是浮点数以二进制表示是无穷的,按 0舍1入保留52位,这样就造成了精度丢失。解决这个问题可以采用扩大倍数法,目的是将小数变成整数后做运算。有多少位小数就扩大到10的n次方,然后在将结果除以10的n次方。不过我们公司的项目统一采用lodash工具库的数学函数实现的。
这个和数据存储的方式有关系,浮点数是以双精度64位存储的,这64位由三部分组成,第1位是符号位,中间11位是指数位,最后52位为尾数位,浮点数在计算时都会转成二进制 ,问题是浮点数以二进制表示是无穷的,按 0舍1入保留52位,这样就造成了精度丢失。
解决这个问题可以采用扩大倍数法,目的是将小数变成整数后做运算。有多少位小数就扩大到10的n次方,然后在将结果除以10的n次方。不过我们公司的项目统一采用lodash工具库的数学函数实现的。
0
点击进入快速问答通道>>
热门公司面试题
热门面试单题