如何判断一个数字是float
还是integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
如何判断一个数字是float
还是integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
Number
原型而不是创建一个函数,就像这样:Number.prototype.integer = function() {
return this % 1 === 0
}
Number.prototype.float = function() {
return this % 1 !== 0
}
let integerTest = 1
let floatTest = 0.5
integerTest.integer() // true
integerTest.float() // false
floatTest.integer() // false
floatTest.float() // true
var isFloat = function(n) {
n = n.length > 0 ? Number(n) : false;
return (n === parseFloat(n));
};
var isInteger = function(n) {
n = n.length > 0 ? Number(n) : false;
return (n === parseInt(n));
};
var isNumeric = function(n){
if(isInteger(n) || isFloat(n)){
return true;
}
return false;
};
浮点数验证条件:
if (lnk.value == +lnk.value && lnk.value != (lnk.value | 0))
整数验证的条件:
if (lnk.value == +lnk.value && lnk.value == (lnk.value | 0))
希望这可能会有所帮助。
这可能不如 % 答案高效,因为它可以避免您首先转换为字符串,但我还没有看到有人发布过它,所以这是另一个应该可以正常工作的选项:
function isInteger(num) {
return num.toString().indexOf('.') === -1;
}
这是我的:
function isInt(quale) {
var valore = $('#'+quale).val().toLowerCase();
if (isNaN(Number(String(valore))) || (valore.indexOf("e") > 0)) {
// Not int
} else {
// Is Int!
}
}
还有这个:
function isFloat(quale) {
var valore = $('#'+quale).val();
valore = valore.replace(",", "");
if (isNaN(String(valore)) || (valore.indexOf("e") > 0)) {
// Not Float
} else {
// Float
}
}
迈向更高境界!
根据我在这里看到的一切,我已经创建了自己的一套函数来测试我所需要的东西:
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的解决方案更短且检查较少,因此可能更好。
function IsInteger(iVal) {
var iParsedVal; //our internal converted int value
iParsedVal = parseInt(iVal,10);
if (isNaN(iParsedVal) || Infinity == iParsedVal || -Infinity == iParsedVal) //sanity check - guard against empty strings and max/min values
return false;
else
return Number(iVal) === (iParsedVal | 0); //the 2nd operand group (intValue | 0), evaluates to true only if the intValue is an integer; so an int type will only return true
}
function IsFloat(fVal) {
var fParsedVal; //our internal converted float value
fParsedVal = parseFloat(fVal);
if (isNaN(fParsedVal) || Infinity == fParsedVal || -Infinity == fParsedVal) //sanity check - guard against empty strings and max/min values
return false;
else
return !!(fVal % 1); //true only if there is a fractional value after the mod op; the !! returns the opposite value of the op which reflects the function's return value
}
我需要检查一个输入值是整数还是浮点数,为此我想出了以下方法:
function isInteger(x) {
var integer = parseInt(x, 10);
if (!isNaN(integer) && !isFloat(x)) {
return true;
}
return false;
}
function isFloat(x) {
var f = parseFloat(x);
var floor = Math.floor(f);
var fraction = f - floor;
if (fraction > 0) {
return true;
}
return false;
}
var cases = [
"1",
"1.00",
"1.01",
"0.05",
"ab1",
"ab1.1",
1,
1.00,
1.01,
0.05,
1e+5,
"",
true,
false,
null,
NaN,
undefined,
];
console.log("isInteger()");
for (var i = 0; i < cases.length; i++) {
console.log(cases[i], isInteger(cases[i]));
}
console.log("\nisFloat()");
for (var i = 0; i < cases.length; i++) {
console.log(cases[i], isFloat(cases[i]));
}
我知道已经有30个答案了,但一个复杂的方法是这样做:
function isInteger(n) {
return n.toString().split('.').length === 1;
}
n
转换为字符串,并根据点进行分割。如果 n
是一个浮点数,例如 4.5
,那么 split 将返回一个数组 ['4', '5']
。如果它是一个整数,比如 45
,它将返回 ['45']
。因此,如果数组的长度为 1,则我们知道它是一个数字。const isInteger = n => n.toString().split('.').length === 1;
这是我能想到的最佳解决方案,用于检查浮点数和整数。
function isFloat(n) {
if (!n) {
return false
}
return !isNaN(n % 1) && n % 1 !== 0;
}
function isInt(n) {
if (n.length==0) {
return false
}
return !isNaN(n % 1) && n % 1 == 0;
}
0
不是一个整数。 - Quentin
<nit-pick>
JavaScript没有不同的整数和浮点数字类型。在JavaScript中每个数字都只是一个Number
。</nit-pick>
- Matt Ball1.0
是整型还是浮点型? - vol7ron