-
在做项目的时候,有一个计算金额的,结果发现计算的金额总是缺失0.01,发现相乘的时候,会失去精度,如图所示。被这整的吐血,由于计算逻辑由前端计算,所以传值后端总出错(尽量后端计算)。

还发现toFixed也会失去进度,简单来说原因:算法不一样,叫说"银行家算法",不是正常的四舍五入,(想要了解可以具体百度一下,此处记录下自己的问题与解决方法)如图所示。
一、取小数位是奇数,舍5入1;

二、取小数位为偶数,舍5不进

-
我的解决方法
toPrecision(value): 将数字格式化为特定的精度或长度
toFixed(value) :方法将字符串四舍五入为指定的小数位数
精度长度变大,后在四舍五入,向下取整;如图所示
一、四舍五入,向下取整取位小数

代码javascriptMath.round((13.345 * 100).toPrecision(12))/100 Math.floor((13.345 * 100).toPrecision(12))/100
js 小数相乘后,精度缺失问题,记录四舍五入,向下取整
窗外鸟不停2023-09-13 12:51
相关推荐
CaoLv5 小时前
无需后端!用 React + WebLLM 把大模型装进浏览器,手撸一个“有脾气”的 AI 机器人 🤖消防大队VUE支队5 小时前
🗓️ 2262年将有两个春节!作为前端的你,日历控件真的写对了吗?鸭蛋超人不会飞5 小时前
axios简易封装,适配H5开发风止何安啊5 小时前
从 “翻页书” 到 “魔术盒”:React 路由凭啥如此丝滑?徐小夕5 小时前
10k Star 的开源 AI 记忆引擎:6 行代码,用图谱+向量打造永不遗忘的 AI前端不太难5 小时前
Vue 项目路由 + Layout 的最佳实践Jolyne_5 小时前
个人积累的一些前端问题解决方案(理论或实践,持续更新....)程序员祥云5 小时前
港股证劵 社招 一面qq_4783775155 小时前
python cut_merge video, convert video2gif, cut gif巴拉巴拉~~5 小时前
Flutter 通用列表刷新加载组件 CommonRefreshList:下拉刷新 + 上拉加载 + 状态适配