首页 > 解决方案 > 计算点后最多两位数的百分比

问题描述

如何计算百分比并在点后最多有两位数?基于上一个主题,我尝试了以下方法:

function calc(part, whole) {
    if (!whole)
        return 0.00;
    return parseFloat((100 * part/whole).toFixed(2));
}

但我得到的是:

console.log((100 * 11154/48291).toFixed(2)) // 23.10
console.log((100 * 11154/48291))  // 23.09747157855501

我希望最终结果是23.09而不是23.10。我也想返回一个数字而不是一个字符串。该toFixed()方法四舍五入并返回一个字符串。我该怎么做?也许lodash可以以某种方式帮助我?

标签: javascript

解决方案


您可以使用该功能来解决问题

function trunc_to_precision(number, precision) {
  numberAsStr = number.toString();
  if (!numberAsStr.includes('.')) {
    return number;
  }

  let [entier, decimal] = numberAsStr.split('.');

  return parseFloat(entier + '.' + decimal.substring(0,precision));
}

let x = trunc_to_precision(23.09747157855501, 2); // 23.09 as float

推荐阅读