查找字符串中小数点后的最高位数

Find highest number of decimal places in String

示例字符串可能如下所示:

我想从 1 个字符串中的数字中找出最多的小数位数

最直接的方法是遍历字符串,检查点的出现,然后从那里开始计算数字的数量,直到下一个不是数字的字符或数字的结尾细绳。由于您的字符串包含多个数字,因此您需要添加一个包含最多小数位的变量。 例如

var str = "3.00+3.000";

function getDecimalPlaces(numb) {
  var highest = 0;
  var counter = 0;
  for (a = 0; a < numb.length; a++) {
    if (numb.charAt(a - 1) == ".") {
      do {
        counter++;
        a++;
      }
      while (!isNaN(numb.charAt(a)) && a < numb.length);
    }
    if (counter > highest) {
      highest = counter;
    }
    counter = 0;
  }
  return highest;
}

console.log(str + " has " + getDecimalPlaces(str) + " decimal places");

通过结合使用 正则表达式 .match() 方法,可以使这更优雅一些。这会在字符串中搜索给定模式,并且 return 是一个结果数组。

var str = "3.00+3.000";

console.log(str.match(/(\.)([0-9]+)/g));

这将 return 一个像这样的数组:

[".00", ".000"]

通过比较它的元素的长度 - 因为它包含点而减去 1 - 我们可以使用这个漂亮的短函数获得小数位数:

var str = "3.00+3.000";
var highest = str.match(/(\.)([0-9]+)/g).reduce(function(a, b) {
    return Math.max(a.length - 1, b.length - 1);
});
console.log(str + " has " + highest + " decimal places");