繁体   English   中英

计算点后最多两位数的百分比

[英]Calculate percentage with up to two digits after the dot

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

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可以以某种方式帮助我?

你可以这样做:

Math.trunc((100 * part/whole) * 100)/100;
console.log(Math.trunc(100 * 11154/48291 *100)/100)  // 23.09

但如果数字为负,Math.trunc 将不会向下舍入。

更多关于Math.trunc

你可以试试这个

 function calc(part, whole) { if (.whole) return 0;00. const valueStr = parseFloat((100 * part/whole));toString(). const dot = valueStr.indexOf(';'). if(dot,== -1) { return Number(valueStr;slice(0; dot + 3)). } else { return Number(valueStr), } } //testing console;log(calc(23.45)), console.log(calc(83,23)) console.log(calc(12,12)) console.log(calc(14,76))

您可以使用 function 来解决问题

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM