如何判断一个数字是float
还是integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
如何判断一个数字是float
还是integer
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
isInteger
函数进行检查。
即,数值类型为整型(number)时返回true,为浮点型(float)时返回false。
console.log(Number.isInteger(2)),<BR>
Will return true
console.log(Number.isInteger(2.5))
Will return false
Number.isInteger(2.0)
也会返回 true
。 - Sơn Trần-Nguyễn正如其他人所提到的,JS中只有double类型。那么如何定义一个数字是整数呢?只需检查舍入后的数字是否等于它本身:
function isInteger(f) {
return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
isFloat('abc')
返回 true
。 - Dagg NabbitisFloat(NaN) // true
- shime这是我用来表示整数的:
Math.ceil(parseFloat(val)) === val
简洁、精炼,总是有效。如果我没记错的话,这就是David Flanagan所建议的。
parseFloat
? - doubleOrtif( n === parseInt(n) ) ...
有道理:如果JavaScript可以将某个东西转换为整数,并且通过转换它变得完全相同,那么您的操作数就是整数。
x = 1; x===parseInt(x); // true
x = "1"; x===parseInt(x); // false
x = 1.1; x===parseInt(x); // false, obviously
// BUT!
x = 1.0; x===parseInt(x); // true, because 1.0 is NOT a float!
var a = 99999999999999999999;
var b = 999999999999999999999; // just one more 9 will kill the show!
var aIsInteger = ( a===parseInt(a) )?"a is ok":"a fails";
var bIsInteger = ( b===parseInt(b) )?"b is ok":"b fails";
alert(aIsInteger+"; "+bIsInteger);
Number.isInteger
的工作方式一致。 - Dagg NabbitNumber.isInteger
的工作方式相一致。单行测试是n === (n | 0)
,如另一个答案所示。 - Dagg Nabbitfunction isInt(number) {
if(!/^["|']{0,1}[-]{0,1}\d{0,}(\.{0,1}\d+)["|']{0,1}$/.test(number)) return false;
return !(number - parseInt(number));
}
function isFloat(number) {
if(!/^["|']{0,1}[-]{0,1}\d{0,}(\.{0,1}\d+)["|']{0,1}$/.test(number)) return false;
return number - parseInt(number) ? true : false;
}
var tests = {
'integer' : 1,
'float' : 1.1,
'integerInString' : '5',
'floatInString' : '5.5',
'negativeInt' : -345,
'negativeFloat' : -34.98,
'negativeIntString' : '-45',
'negativeFloatString' : '-23.09',
'notValidFalse' : false,
'notValidTrue' : true,
'notValidString' : '45lorem',
'notValidStringFloat' : '4.5lorem',
'notValidNan' : NaN,
'notValidObj' : {},
'notValidArr' : [1,2],
};
function isInt(number) {
if(!/^["|']{0,1}[-]{0,1}\d{0,}(\.{0,1}\d+)["|']{0,1}$/.test(number)) return false;
return !(number - parseInt(number));
}
function isFloat(number) {
if(!/^["|']{0,1}[-]{0,1}\d{0,}(\.{0,1}\d+)["|']{0,1}$/.test(number)) return false;
return number - parseInt(number) ? true : false;
}
function testFunctions(obj) {
var keys = Object.keys(obj);
var values = Object.values(obj);
values.forEach(function(element, index){
console.log(`Is ${keys[index]} (${element}) var an integer? ${isInt(element)}`);
console.log(`Is ${keys[index]} (${element}) var a float? ${isFloat(element)}`);
});
}
testFunctions(tests);
var isInt = function (n) { return n === (n | 0); };
2
是一个整数,而23
被视为函数的第二个参数。在JavaScript中,小数使用点作为分隔符 - 所以应该是2.23
。 - ankr!!(24%1) // false
!!(24.2%1) // true
这取决于您想要实现什么。如果您想要“模拟”强类型语言,那我建议您不要尝试。正如其他人所提到的,所有数字具有相同的表示(相同的类型)。
使用像 Claudiu 提供的东西:
isInteger(1.0) -> true
这看起来很合理,但在像C这样的语言中,您将得到 false
。
function isInteger(n) {
return ((typeof n==='number')&&(n%1===0));
}
function isFloat(n) {
return ((typeof n==='number')&&(n%1!==0));
}
function isNumber(n) {
return (typeof n==='number');
}
<nit-pick>
JavaScript没有不同的整数和浮点数字类型。在JavaScript中每个数字都只是一个Number
。</nit-pick>
- Matt Ball1.0
是整型还是浮点型? - vol7ron