一个菜鸟的互联网技术分享博客
您的位置: 主页 > javascript小数乘法精确率填坑
advertisement

javascript小数乘法精确率填坑

在写项目的时候计算产品价格总额的时候是:单价*年数,年数是整数,但是单价可以是小数,那么问题就来了,如图所示



喝了一杯黑枸杞泡茶发现原来这是JavaScript浮点运算的一个bug

因为浮点数是以二进制来存储的,而用二进制表示十进制是不能精确表示的,即使浮点数的十进制有效数字比较少,那也不一定能用二进制精确表示。为什么呢?
首先浮点数小数位的二进制是这样对应的:
小数后1位:0.5 (2^-1)
小数后2位:0.25 (2^-2)
...
小数位n位:2^-n
也就是说,任何一个浮点数的小数部分都是由2^-1 ... 2^-n组合而成的,这样就能理解为什么有效位数少的浮点数也不能精确表示了,比如0.1,就无法用上面的位数组合而精确表示出来,不信把浮点数所有位数输出来试试

解决方案:
toFixed()


zhangren.online
上一篇:splice()方法删除数组中不连续的几项
下一篇:javaascript修改url不刷新页面

您可能喜欢

​canvas的drawImage无法显示图像

​canvas的drawImage无法显示图像

​JS数组去重的几种常见方法

​JS数组去重的几种常见方法

​CSS控制文字,超出部分显示省略号

​CSS控制文字,超出部分显示省略号

​Web前端经典面试试题及答案

​Web前端经典面试试题及答案

回到顶部