我在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.prototype.isInt= function(){
return this== this>> 0;
}
我总是觉得javascript中的位操作符很糟糕
他们几乎不锻炼。
其他回答
parseInt(num) === num
当传递一个数字时,parseInt()只是将数字作为int返回:
parseInt(3.3) === 3.3 // false because 3 !== 3.3
parseInt(3) === 3 // true
以下是我的守卫库的摘录(灵感来自David Herman的Effective JavaScript):
var guard = {
guard: function(x) {
if (!this.test(x)) {
throw new TypeError("expected " + this);
}
}
// ...
};
// ...
var number = Object.create(guard);
number.test = function(x) {
return typeof x === "number" || x instanceof Number;
};
number.toString = function() {
return "number";
};
var uint32 = Object.create(guard);
uint32.test = function(x) {
return typeof x === "number" && x === (x >>> 0);
};
uint32.toString = function() {
return "uint32";
};
var decimal = Object.create(guard);
decimal.test = function(x) {
return number.test(x) && !uint32.test(x);
};
decimal.toString = function() {
return "decimal";
};
uint32.guard(1234); // fine
uint32.guard(123.4); // TypeError: expected uint32
decimal.guard(1234); // TypeError: expected decimal
decimal.guard(123.4); // fine
当使用带有十进制步骤的计数器时,检查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 IsDecimalExist(p_decimalNumber) {
var l_boolIsExist = true;
if (p_decimalNumber % 1 == 0)
l_boolIsExist = false;
return l_boolIsExist;
}
你可以用这个:
bool IsInteger() {
if (num.indexOf(".") != -1) // a decimal
{
return Math.ceil(num) == Math.floor(num); // passes for 1.0 as integer if thats the intent.
}
return Number.isSafeInteger(num);
}
检查该数字是整数还是十进制。