小程序四舍五入算法有问题,小数点后两位相乘乘不尽
208.5*5.85=*.4999999999
208.5*5.85=*.4999999999
parseFloat((208.5*5.85).toFixed(10))
原理:https://blog.csdn.net/qq_38209578/article/details/86084586
浮点数的坑,不是小程序的产物,这个锅不是微信的,是JS的坑!在做PC端和普通H5时,照样会有这问题。
在小程序内,用到浮点数的场景也不少,最多的,应该是商品购买,单价0.9、9.9、19.9等,再乘于奇数,大概率出现楼主说的bug
建议自己在JS中四舍五入一下~
如果调用小程序的支付API,用户反馈一直支付失败,很可能是这个bug引起。支付的API会校验前端传入的价格,与服务端生成订单时的价格是否一致,不一致的话,肯定支付失败。
不光JS一门语言,凡是采用IEEE 754标准定义表示数字的编程语言都有这个问题,只是其他语言有内部处理机制。深层次原因可以参考http://0.30000000000000004.com/