我在JavaScript中寻找一种简单的方法来检查一个数字是否有小数点(以确定它是否为整数)。例如,

23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}

当前回答

函数检查数字是十进制或整数

function IsDecimalExist(p_decimalNumber) {
    var l_boolIsExist = true;

    if (p_decimalNumber % 1 == 0)
        l_boolIsExist = false;

    return l_boolIsExist;
}

其他回答

如果value是字符串(例如from <input),使用下面的语句:

Math.floor(value).toString() !== value

我将. tostring()添加到floor,使其也适用于value == "1 "的情况。(以十进制分隔符或其他字符串结束)。同时数学。floor总是返回一些值,因此. tostring()永远不会失败。

Number.isSafeInteger(value);

在JavaScript中,isSafeInteger()是一个Number方法,用于返回一个布尔值,指示一个值是否为安全整数。这意味着它是一个整数值,可以精确地表示为IEEE-754双精度数,而不需要舍入。

最常见的解决方案是去掉数字的整数部分,并将其与零进行比较,如下所示:

function Test()
{
     var startVal = 123.456
     alert( (startVal - Math.floor(startVal)) != 0 )
}

你可以把它乘以10,然后用10做一个“模数”运算/除法,然后检查这两个运算的结果是否为零。这两个操作的结果将给出小数点后的第一个数字。 如果result等于0,则该数为整数。

if ( (int)(number * 10.0) % 10 == 0 ){
// your code
}

以下是我的守卫库的摘录(灵感来自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