前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS中对数字(含有小数的)进行相乘后,数值不正确的问题

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

作者头像
Li_XiaoJin
发布2022-06-10 19:02:22
2.1K0
发布2022-06-10 19:02:22
举报
文章被收录于专栏:Lixj's BlogLixj's Blog

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

背景

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

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

解决

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

浮点运算的精度问题,所以代码里使用 parseFloat(65.32 * 100).toFixed() 或 (65.32 * 100).toFixed() 进行取整

特此记录一下昨晚被烦了一晚上的问题(微笑.jpg)

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/js中对数字含有小数的进行相乘后数值不正确问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档