-
在做项目的时候,有一个计算金额的,结果发现计算的金额总是缺失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
相关推荐
甜兒.34 分钟前
鸿蒙小技巧她似晚风般温柔7893 小时前
Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)Jiaberrr4 小时前
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)everyStudy4 小时前
JS中判断字符串中是否包含指定字符城南云小白4 小时前
web基础+http协议+httpd详细配置前端小趴菜、4 小时前
Web Worker 简单使用web_learning_3214 小时前
信息收集常用指令Ylucius5 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?tabzzz5 小时前
Webpack 概念速通:从入门到掌握构建工具的精髓200不是二百5 小时前
Vuex详解