js两数相乘出现多小数

在这里插入图片描述
问题截图如上:

出现原因: 浮点数值的最高进度是17位小数,但在进行运算的时候其精确度却远远不如整数;整数在进行运算的时候都会转成10进制;
而Java和JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。

解决办法: 当前页面 购买次数 *100 * 单价 / 100

这个方法适合较小的两个数字相乘。

在当前业务场景下,可能会输入很大的购买次数 eg:1万。甚至更多。
最完美的解决办法:

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

(buyTimes *costPrice).toFixed(2)

解决完毕!!


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