查找字符串中小数点后的最高位数
Find highest number of decimal places in String
示例字符串可能如下所示:
-
- "3.0000+3"
-
- "3.00+3.00"
-
- "3.00+3.000"
我想从 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");
示例字符串可能如下所示:
-
- "3.0000+3"
-
- "3.00+3.00"
-
- "3.00+3.000"
我想从 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");