为什么angular.isNumber()没有按预期工作?

Kev*_*eal 11 javascript angularjs

好像AngularJS似乎angular.isNumber不起作用.它不适用于数字字符串.难道我做错了什么?我应该用isNaN()吗?

angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true
Run Code Online (Sandbox Code Playgroud)

我需要一些东西来看看一个字符串是否是一个数字(当它实际上是)并且angular.isNumber()不会让我这样做,除非我乘以1,但如果我这样做那么它将永远是真的.另外NaN是不是一个数字(定义)等应该返回false.

Pau*_* S. 14

JavaScripttypeof NaN === 'number'.

如果需要将String识别为Number,则将其强制转换为Number,转换回String并将其与输入进行比较,例如.

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
Run Code Online (Sandbox Code Playgroud)

  • 只是想指出,如果你处理极小或极大(字符串)的数字,这可能会受到舍入错误的影响. (2认同)