2014-11-22 126 views
1

如何使用Javascript计算实数的小数位数(非数字)?使用Javascript获取小数位数

function countDecimals(number) { 

} 

例如,给定245.395,它应该返回3

+1

245.0应该返回什么? – RobG 2014-11-22 21:32:25

回答

2

这样的:“”

var val = 37.435345; 
var countDecimals = function(value) { 
    if (Math.floor(value) !== value) 
     return value.toString().split(".")[1].length || 0; 
    return 0; 
} 
countDecimals(val); 
1

的主要思想是将数字转换为字符串,并得到的指数

var x = 13.251256; 
var text = x.toString(); 
var index = text.indexOf("."); 
alert(text.length - index - 1); 
0

您可以使用一个简单的函数,它在小数点位置分开(如果有的话)并在此之后对数字进行计数。由于小数位可以用'。'表示或“”(或者一些其它字符),您可以测试这一点,使用适当的一个:

function countPlaces(num) { 
    var sep = String(23.32).match(/\D/)[0]; 
    var b = String(num).split(sep); 
    return b[1]? b[1].length : 0; 
} 

console.log(countPlaces(2.343)); // 3 
console.log(countPlaces(2.3)); // 1 
console.log(countPlaces(343.0)); // 0 
console.log(countPlaces(343)); // 0 
0

这里是一个不依赖于任何转换为​​字符串的方法:

function getDecimalPlaces(x,watchdog) 
{ 
    x = Math.abs(x); 
    watchdog = watchdog || 20; 
    var i = 0; 
    while (x % 1 > 0 && i < watchdog) 
    { 
     i++; 
     x = x*10; 
    } 
    return i; 
} 

请注意,计数值不会超出watchdog的值(默认值为20)。