11

AngularJSangular.isNumberが機能していないようです。数値である文字列では機能しません。私は何か間違ったことをしていますか?私はちょうど使用する必要がありますisNaN()か?

angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true

文字列が数値であるかどうか (実際に数値である場合) を確認する必要があり、angular.isNumber()1 を掛けない限りそれを行うことはできませんが、それを行うと常に true になります。またNaN、(定義により) 数値ではないため、false を返す必要があります。

4

3 に答える 3

16

JavaScriptでは、typeof 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
于 2013-06-27T19:48:30.413 に答える