获取第一个而不是 0 十进制数字的位置



我需要找到第一个不是"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)

相关内容

  • 没有找到相关文章

最新更新