如何发现一个数字是浮点数或整数?

1.25 --> float  
1 --> integer  
0 --> integer  
0.25 --> float

当前回答

我觉得这是最优雅的方式:

function isInteger(n) {
    return n === (n^0);
}

在非数值的情况下,它还需要返回false。

其他回答

我参加晚会迟到了,但这是我的版本

isInteger: obj => Number.isInteger(!isNaN(obj % 1) && obj % 1 !== 0 ? obj : parseInt(obj)),

试试这个

let n;
return (n = value % 1) !== 0 && !isNaN(n);

当返回值为false时,表示输入值为浮点数或浮点数字符串,否则输入值为整数numref或整数字符串。

基本上,它需要检查精度值是否不等于零。

另一个是检查正确的字符串编号。

您可以使用Number.isInteger()方法通过对数字进行除法来检查数字是整数还是浮点数,例如:

    function isNumberFloatOrInteger(a, b){
     if(Number.isInteger(a / b)){
      return true;
      }
      else{ return false };
}

注意:isInteger()与internet explorer不兼容。

2022年更新-我们可以简单地使用Number的方法。

检查整数或浮点:数字.is有限(val)

检查整数是否:数字.isInteger(val)

检查float(非整数):!Number.isInteger(val)&&Number.isFinite(val)

基于我在这里看到的所有内容,我创建了自己的一组函数来测试我所需要的:

function NumberValidator() {
this.isFloat = function (n) {
    return typeof(n)==="number" && n === +n && Math.round(n) !== n;
};

this.isInteger = function (n) {
    return typeof(n)==="number" && n === +n && Math.round(n) === n;
};

this.isFloatOrInteger = function (n) {
    return this.isFloat(n) || this.isInteger(n);
};

this.isNonZeroFloatOrInteger = function (n) {
    return this.isFloatOrInteger(n) && n > 0;
};

this.isNonZeroInteger = function (n) {
    return this.isInteger(n) && n > 0;
};
}

然而,shime的解决方案更短,检查更少,因此可能是更好的解决方案。