JS中对数字(含有小数的)进行相乘后,数值不正确的问题

之前测试的时候,偶然遇到了个小数相乘的问题,后来找了一下博客,才发现原来是JS浮点运算的问题,故在此记录了一下,避免我忘记。

背景

当时前台在页面上展示时是65.32,但是我后来查后台日志时发现传到后台时的数值为6531.999999999999,看了代码发现是由于前台传的金额与后台计算出的金额不一致,故被后台拦截。
然后我去看了前台的js代码,发现展示的金额确实没问题,但是在订单提交的时候出了问题。


这样直接算出来的确实是有问题的。

解决

(1)网上找到了一些解决办法,就是重新写了一些浮点运算的函数。
(2)这个和数据结构有关系
整数型自动转换成正型计算
小数型直接转成double型计算
这是在内存中运算的时候必须这样
你该知道计算机只认识0和1吧
具体的就是浮点精准度的问题
float 精确到小数点后7位
double 精确到小数点后15位

浮点运算的精度问题,所以代码里使用 toFixed() 进行四舍五入取整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值