我在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) {...}
当前回答
当使用带有十进制步骤的计数器时,检查number是否为整数实际上会失败,如下所示。因此,用小数点后9位(可能更多)来格式化数字可能是最安全的(尽管速度较慢),如果它以9个零结尾,那么它就是一个整数。
const isRound = number => number. tofixed (9).endsWith('000000000'); For (let counter = 0;Counter < 2;计数器+= 0.1){ console.log({counter, modulo: counter % 1,格式化:counter. tofixed (9), isRound: isRound(counter)}); }
其他回答
function isDecimal(num) {
return (num !== parseInt(num, 10));
}
可以使用不改变值的位操作(^ 0或~~)来丢弃小数部分,小数部分可用于舍入。四舍五入后,将其与原始值进行比较:
function isDecimal(num) {
return (num ^ 0) !== num;
}
console.log( isDecimal(1) ); // false
console.log( isDecimal(1.5) ); // true
console.log( isDecimal(-0.5) ); // true
简单,但有效!
Math.floor(number) === number;
当使用带有十进制步骤的计数器时,检查number是否为整数实际上会失败,如下所示。因此,用小数点后9位(可能更多)来格式化数字可能是最安全的(尽管速度较慢),如果它以9个零结尾,那么它就是一个整数。
const isRound = number => number. tofixed (9).endsWith('000000000'); For (let counter = 0;Counter < 2;计数器+= 0.1){ console.log({counter, modulo: counter % 1,格式化:counter. tofixed (9), isRound: isRound(counter)}); }
number = 20.5
if (number == Math.floor(number)) {
alert("Integer")
} else {
alert("Decimal")
}
非常酷,也适用于XX.0这样的东西! 它之所以有效,是因为Math.floor()如果有小数,就会将其切掉,因此如果小数与原始数字不同,我们就知道它是小数!并且没有字符串转换:)