【问题标题】:Finding number of digits in javascript [duplicate]在javascript中查找位数[重复]
【发布时间】:2018-06-01 19:03:13
【问题描述】:

我正在尝试在 javascript 中获取数字的位数,但我在网上找到的方程式遇到了一些极端情况。

这是我正在使用的,来自this site

getNumDigits(val){
  return val === 0 ? 1 : Math.floor(Math.log(Math.abs(val)) / Math.LN10 + 1);
}

但问题是,如果你输入一个像 1000 这样的数字,你会以某种方式得到一个 JavaScript 舍入错误,其中的值就像 3.999997

我注意到,只要您的数字不在 -1 和 1 之间,您只需将 1 添加到 Math.abs(val) 的 val 中,它就会适当地设置位数,但它看起来很乱。

我尝试将 val 转换为字符串并获取长度,但在使用类似 0.2 的小数的情况下,这不起作用 - 作为它会说长度是3。

有什么好的方程式/函数可以使用?

【问题讨论】:

  • 我得到了3 的真实值,用于1000。顺便说一句,为什么是自然对数?

标签: javascript math logarithm natural-logarithm


【解决方案1】:

将数字设为字符串并使用正则表达式仅计算数字可以工作。

function getNumDigits(val) {
  return (`${val}`.match(/\d/g) || []).length
}

console.log(getNumDigits(2.5245234))

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2014-08-08
    • 2019-07-03
    • 2013-07-31
    • 2018-12-18
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多