Javascript 计算小数点后的数字,包括零

Javascript 计算小数点后的数字,包括零,javascript,Javascript,我有这个 export const countDecimals = (value) => { let num = parseFloat(value.replace(/,/g, "")); if (Math.floor(num) === num) return 0; return num.toString().split(".")[1].length || 0; } 它一直工作到我输入一个尾随零的数字,比如2.10。它忽略零并返回1 如何

我有这个

export const countDecimals = (value) => {
  let num = parseFloat(value.replace(/,/g, ""));
  if (Math.floor(num) === num) return 0;
  return num.toString().split(".")[1].length || 0;
}
它一直工作到我输入一个尾随零的数字,比如2.10。它忽略零并返回1

如何解决这个问题


另外,我之所以使用parseFloat,是因为在我的例子中,值是字符串,如果它是一个像“2190.10”这样的大数字,则将对其进行格式化。

您可以这样做:

export const countDecimals=(值)=>{
//值是字符串类型
const num=value.split('.')//拆分整数和小数
返回数值[1]?数值[1]。长度:0
//返回点后的小数位数,如果没有小数,则返回0
}
/*
也就是说,如果值为2.10 num将等于['2','10']num[1]是
小数部分
*/
试试这个

  const countDecimals = value => {
    const num = +value;
    if (Math.floor(num) === num) {
      return 0;
    }
    return value.split('.')[1].length;
  };
const countDecimals=(值)=>{
const num=value.toString().replace(/,/g',);
如果(!num.includes('.')返回0
返回num.toString().split(“.”[1]。长度;
}
log(countDecimals(“2000222.2200”);
console.log(countDecimals(“2”));
console.log(countDecimals(“2.1”));
console.log(countDecimals(“2.10”));
console.log(countDecimals(2));

console.log(countDecimals(2.1))
为什么你要先把所有的
num=parseFloat(value)
都写下来,然后再返回
num.toString()
呢?为什么不干脆
返回值。split(“.”…
?@Thomas,因为该值是字符串,如果它是一个更大的数字,如“1921.21”,则可以对其进行格式化。@Ivar,不,即使其中的函数“decimalPlaces(num)”也不考虑尾随的零……:(@Aaron@Ivar我通过了数字而不是字符串。谢谢!请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。