我需要找到第一个不是"0"十进制数字的位置。例如
a = 0.00056;
点后拳头不是"0"的数字是5,搜索位置是4。是否有已经构建的javascript函数或一种优雅的方式来在javascript中获取它?
出于好奇,我将在滑块中保留 0.00001 作为步进值,其最大值是变量 a。
你可以取十的对数并取一个底值。
var a = 0.00056,
p = Math.floor(Math.log10(a));
console.log(p);
您可以使用字符串操作或纯数字来执行此操作。
数学方法是:
Math.floor(Math.abs(Math.log10(n))); // if n >= 0 && n < 1
let arr = [
0.56, // 0
0.056, // 1
0.0056, // 2
0.00056, // 3
0.000056 // 4
];
arr.forEach(a => {
console.log(`n = ${a}, str = ${getFirstNonZeroStr(a)}, log = ${getFirstNonZeroLog(a)}`);
});
function getFirstNonZeroStr(n) {
if (n >= 1) return -1;
let s = n.toString();
let m = s.match(/^0.(0*)[d]+$/);
return m[1].length;
}
function getFirstNonZeroLog(n) {
if (n >= 1) return -1;
return Math.floor(Math.abs(Math.log10(n)));
}
只需通过将其转换为字符串并使用 reg exp 来添加另一种方式
a = 0.00056;
console.log(a.toString().match(/0.(0*[^0])/)[1].length)