先看结果
众所周知 前端js 计算的时候 会出现
console.log(44.22 * 10000.22); // 442209.72839999996
小数位不精准的情况 导致计算数值 导致我们在项目中计算错误的问题 由此我不希望学习前端的小伙伴们 因为这种事情而困恼 所以:
以下方法为你解决计算中出现的一系列问题
Math.fround
Math.fround()可以将任意的数字转换为离它最近的单精度浮点数形式的数字。- 官方地址: developer.mozilla.org/en-US/docs/…
console.log(44.22 * 10000.22); // 442209.72839999996
console.log(Math.fround(44.22 * 10000.22)); // 442209.71875
Number.prototype.toFixed();
toFixed()方法使用定点表示法来格式化一个数值。- 官方地址: developer.mozilla.org/en-US/docs/…
console.log(Math.fround(44.22 * 10000.22).toFixed(2)); // 442209.72
parseFloat
parseFloat()函数解析一个参数(必要时先转换为字符串)并返回一个浮点数。- 官方地址: developer.mozilla.org/en-US/docs/…
console.log(parseFloat(442209.718750000000000)); //442209.71875
parseFloat && Math.fround && toFixed 方法结合使用
console.log(parseFloat(Math.fround(44.22 * 10000.22).toFixed(2)) // 442209.72
方法封装使用
/**
*
* @param { number } calculatedValue 计算的结果值 默认为 0
* @param { number } fixed toFixed 默认为 2
* @returns number 过滤后的结果
*/
function calculate (calculatedValue = 0 , fixed = 2) {
return parseFloat(Math.fround(calculatedValue).toFixed(fixed));
}
总结
- 该方法是通过不断尝试和艰苦的计算得到的方法希望可以帮助到各位前端小伙伴;
- 如使用中遇到问题 可私信;