-
在做项目的时候,有一个计算金额的,结果发现计算的金额总是缺失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
相关推荐
Ashley的成长之路13 分钟前
前端性能优化实战手册·第2篇:资源加载策略全解浅水壁虎17 分钟前
vue基础(第二章 )界面开发小八哥18 分钟前
界面控件DevExtreme v26.1新版亮点——支持Angular 22Getflare22 分钟前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)oil欧哟29 分钟前
我做了一个 Vibe Coding 术语学习站:VibeHub审小匠OpenCPAi1 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比Revolution611 小时前
一个公共表格组件,是怎么一步步失控的mONESY1 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?