javascript js check - 数値に小数点以下の桁数があるかどうか/整数であるかどうかを調べる




9 Answers

または、それが小数でないかどうかを調べるために使うことができます:

string.indexOf(".")==-1;
integer number is

私はJavaScriptの簡単な方法を探して、数値が小数点以下桁数を持つかどうかを確認します(整数かどうかを判断するため)。 例えば、

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



最も一般的な解決策は、数値の整数部分を取り除き、そのようにゼロと比較することです。

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



シンプルだけど効果的!

Math.floor(number) == number;



number = 20.5

if (number == Math.floor(number)) {

alert("Integer")

} else {

alert("Decimal")

}

かなりクールでXX.0のようなものにも使えます! これは、Math.floor()が小数点を切り捨てるため、床が元の数と異なる場合には小数点以下の桁数があるため動作します。 そして文字列の変換はありません:)




Number.isInteger()はおそらく最も簡潔です。 整数の場合はtrueを返し、そうでない場合はfalseを返します。




以下は私のガードライブラリからの抜粋です(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



チェック番号の機能は、10進数または整数です。

function IsDecimalExist(p_decimalNumber) {
    var l_boolIsExist = true;

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

    return l_boolIsExist;
}



function isDecimal(num) {
  return (num !== parseInt(num, 10));
}



次の関数を使用して、小数点以下の桁数があるかどうかを調べることができます。

function hasDecimal(num){
    return !!(num % 1);
}

console.log(hasDecimal(2)); //true
console.log(hasDecimal(2.32423)); //false

だから明らかに、一部のユーザーは説明が必要です。 私はそれを分割します:(num%1)

括弧はその操作を最初に実行することを意味します。 num - 関数が渡した変数。 % - 左の数字を右に分割しようとするモジュラス記号。 余りがある場合は、小数点として返します。 均等に分割する場合は0を返します。

だから、これまでのものを要約すると、(num%1)が返されます:

0に分割した場合は0、そうでない場合は#####

0 == false。

[ANY_NUMBER_NOT_ZERO] == trueです。

例:新しいブール値(0)はfalseです。新しいブール値(12312.1231)がtrueです。

他の選択肢:ユーザーは(num%1)の値を返そうとする可能性があります。これは基本的に同じことを実現します。 return(0)はfalseで、return(1.213113)はtrueです。

しかし、私はブール値を返すことを望みました。 したがって、値をブール値に強制するショートカットとして、私はaを追加しました! それの前のシンボル。

知っているほど多くの人が、! NOTを意味します。 しかし、値をブール値に強制します。

それ以来! symobolは値をブール値に変換し、その値を反転します。 私が使う !! 値をブール値に強制し、値を元のブール値に戻します。




Related