野生大熊猫

通过“xe-utils”解决js精度不足的问题
一、闲聊这边在写项目的时候发现一个问题,就是如果通过4.39*100的话,答案并非是439,而是439.99999...
扫描右侧二维码阅读全文
21
2021/06

通过“xe-utils”解决js精度不足的问题

一、闲聊

这边在写项目的时候发现一个问题,就是如果通过4.39*100的话,答案并非是439,而是439.999999998这里面涉及到一个js精度的问题,需要了解的可以自行百度

微信图片_20210621012723.png

二、另外一个问题

这边为啥需要让4.39变成439呢,是因为金额是元,但是传到微信那边去的话,金额需要是分,然后就衍生出另外一个问题,就是这边我要把vue中得到的this.search.total_fee改变成439

但是调整的时候发现这边值会动态改变

微信图片_20210621013102.png

三、解决问题

原来这边js=符号是属于引用,相当于datathis.searchData是指向同一个内存,于是这里需要做一次copy

方案1

这里参照网上的方法,先转换成字符串再转换成对象

微信图片_20210621013224.png

这种方案是没有问题的

方案2 (clone推荐)

这里发现一个库,xe-utils中的clone函数,可以直接将对象copy一份

//第二个参数为是否深拷贝
const data = clone(this.searchData, true)

四、解决精度问题

因为发现xe-utils是一个工具库,于是简单的浏览的一遍,发现的精度问题在这里有一个比较不错解决方案

方案1 (网上有函数)

网上有函数,但是个人觉得不咋样,也已经有封装好的库没必要自己再去copy到自己项目中去

方案2 (multiply函数)

这里直接使用multiply

multiply (num1, num2) 乘法运算
 data.total_fee[0] = multiply(data.total_fee[0], 100)

相关资源:xe-utils库文档地址

Last modification:June 21st, 2021 at 01:41 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment