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我通过了数字而不是字符串。谢谢!请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。