Tuesday, May 21, 2024
 Popular · Latest · Hot · Upcoming
149
rated 0 times [  152] [ 3]  / answers: 1 / hits: 66777  / 12 Years ago, fri, may 4, 2012, 12:00:00

I have a set of string numbers having decimals, for example: 23.456, 9.450, 123.01... I need to retrieve the number of decimals for each number, knowing that they have at least 1 decimal.



In other words, the retr_dec() method should return the following:



retr_dec(23.456) -> 3
retr_dec(9.450) -> 3
retr_dec(123.01) -> 2


Trailing zeros do count as a decimal in this case, unlike in this related question.



Is there an easy/delivered method to achieve this in Javascript or should I compute the decimal point position and compute the difference with the string length? Thanks


More From » string

 Answers
297
function decimalPlaces(num) {
var match = (''+num).match(/(?:.(d+))?(?:[eE]([+-]?d+))?$/);
if (!match) { return 0; }
return Math.max(
0,
// Number of digits right of decimal point.
(match[1] ? match[1].length : 0)
// Adjust for scientific notation.
- (match[2] ? +match[2] : 0));
}


The extra complexity is to handle scientific notation so




decimalPlaces('.05')
2
decimalPlaces('.5')
1
decimalPlaces('1')
0
decimalPlaces('25e-100')
100
decimalPlaces('2.5e-99')
100
decimalPlaces('.5e1')
0
decimalPlaces('.25e1')
1


[#85790] Thursday, May 3, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
krystadesiraeo

Total Points: 493
Total Questions: 93
Total Answers: 100

Location: San Marino
Member since Thu, Jun 30, 2022
2 Years ago
;