我正在寻找一种在JavaScript中轻松检查数字是否有小数位(以确定它是否为整数)的方法。例如,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
我正在寻找一种在JavaScript中轻松检查数字是否有小数位(以确定它是否为整数)的方法。例如,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
可以使用 模运算 来解决:
num % 1 != 0
// 23 % 1 = 0
// 23.5 % 1 = 0.5
请注意,这是基于数字的值而不是格式。它将包含具有固定小数点的整数的数字字符串视为整数:'10.0' % 1; // returns 0
10 % 1; // returns 0
'10.5' % 1; // returns 0.5
10.5 % 1; // returns 0.5
Number.isInteger(23); // true
Number.isInteger(1.5); // false
Number.isInteger("x"); // false:
Number.isInteger() 是 ES6 标准的一部分,不支持 IE11。它会针对非数字参数、NaN
和 Infinity
返回 false,而 x % 1 != 0
则返回 true。Number.isInteger(12.0)
返回 true
。 - le_mNumber.isInteger('1e3')
是false
,即使Number.isInteger(1e3)
是true。 假设问题的意图是找到非整数值(而不是表示中实际存在小数点),那么字符串值'12.0' 应该 通过,因为它代表一个整数,但同样,Number.isInteger('12.0')
是false
。 - brianmearnsNumber.isInteger(2.000000000000000000001)
// true - dYale2.000000000000000000001 === 2
。 - le_m或者你可以用这个来判断它是否不是十进制:
string.indexOf(".") == -1;
yournumber.toString.indexOf(".")
。 - Daniel Omine简单而有效!
Math.floor(number) === number;
Math.floor(3.0) == 3.0
的结果为真,Math.floor(3.3) == 3.3
的结果为假。 - tim-phillipsNumber.isSafeInteger(value);
在JavaScript中,isSafeInteger()是一个Number方法,用于返回一个布尔值,指示一个值是否为安全整数。这意味着它是一个整数值,可以精确地表示为IEEE-754双精度数字,而不需要四舍五入。
最常见的解决方案是去除数字的整数部分,并将其与零进行比较,如下所示:
function Test()
{
var startVal = 123.456
alert( (startVal - Math.floor(startVal)) != 0 )
}
startVal != Math.floor(startVal)
? - Andy E//把它转换为字节呢?
Number.prototype.isInt= function(){
return this== this>> 0;
}
我总觉得在JavaScript中位运算符有点冤枉——
它们几乎没有什么用武之地。
>>
操作符会将值转换成有符号的 32 位整数。 - Matthew CrumleyNumber.isInteger()
可能是最简洁的方法。它返回 true 如果是整数,返回 false 如果不是。
number = 20.5
if (number == Math.floor(number)) {
alert("Integer")
} else {
alert("Decimal")
}
var re=/^-?[0-9]+$/;
var num=10;
re.test(num);
num=999999999999999999999
失败了。 - bobince
20.0
是否有小数点,除非它被表示为字符串。此外,其他解决方案都没有因未解决这个问题而受到贬低 ;-) 我的翻译如下:@Abe说的话确实没错,但我认为这种情况不太可能发生。如果要在程序中自动判断一个数字是否含有小数点,除非以字符串的形式表示,否则是不可能的。此外,其他解决方案并没有因为未解决这个问题而受到批评。;-) - Andy E"10."
is a whole number and the result will be exactly the same as"10"
or10
.”你的意思是什么?哪些内容将无效?"10."
是一个整数,结果与"10"
或10
完全相同。 - Andy E