如何找到一个数字是float
或integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
如何找到一个数字是float
或integer
?
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
which 还检查值是否太高/太低以至于任何小数位都会丢失。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;
};
为什么不是这样的:
var isInt = function(n) { return parseInt(n) === n };
您可以使用一个简单的正则表达式:
function isInt(value) {
var er = /^-?[0-9]+$/;
return er.test(value);
}
或者您也可以根据需要使用以下功能。它们由PHPJS 项目开发。
is_int()
=> 检查变量类型是否为整数以及其内容是否为整数
is_float()
=> 检查变量类型是否为浮点型以及其内容是否为浮点型
ctype_digit()
=> 检查变量类型是否为字符串以及其内容是否只有十进制数字
更新 1
现在它也检查负数,感谢@ChrisBartley 评论!