协慌网

登录 贡献 社区

如何检查数字是浮点数还是整数?

如何找到数字为floatinteger

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

答案

除以 1 时检查余数:

function isInt(n) {
   return n % 1 === 0;
}

如果您不知道参数是一个数字,则需要进行两个测试:

function isInt(n){
    return Number(n) === n && n % 1 === 0;
}

function isFloat(n){
    return Number(n) === n && n % 1 !== 0;
}

在编写此答案后 5 年的 2019年更新,ECMA Script 2015 中对解决方案进行了标准化。此答案中涵盖了该解决方案。

尝试使用这些函数来测试一个值是否是没有小数部分并且在可以表示为精确整数的大小限制内的数字原始值。

function isFloat(n) {
    return n === +n && n !== (n|0);
}

function isInteger(n) {
    return n === +n && n === (n|0);
}

目前有一种称为Number.isInteger()的方法,除 IE 之外,其他所有方法均已实现。 MDN还为其他浏览器提供了 polyfill:

Number.isInteger = Number.isInteger || function(value) {
  return typeof value === 'number' && 
    isFinite(value) && 
    Math.floor(value) === value;
};

但是,在大多数情况下,最好使用Number.isSafeInteger ,它还会检查该值是否过高 / 过低,以至于无论如何小数位都会丢失。 MDN对此也有一个 polyfil。 (您还需要isInteger pollyfill。)

if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}
Number.isSafeInteger = Number.isSafeInteger || function (value) {
   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};