It appears as if AngularJS's angular.isNumber
is not working. It doesn't work with strings that are numbers. Am I doing something wrong? Should I just use isNaN()
?
angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true
I need something to see if a string is a number (when it actually is) and angular.isNumber()
won't let me do that unless I multiply by 1, but if I do that then it will always be true. Also NaN
is not a number (by definition) and so should return false.
In JavaScript, typeof NaN === 'number'
.
If you need to recognise a String as a Number, cast it to Number, convert back to String and compare this against the input, for example.
function stringIsNumber(s) {
var x = +s; // made cast obvious for demonstration
return x.toString() === s;
}
stringIsNumber('95.55'); // true
stringIsNumber('foo'); // false
// still have
stringIsNumber('NaN'); // true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With