[Javascript] 数値に小数点以下の桁数があるかどうか/整数であるかどうかを調べる


Answers

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

string.indexOf(".")==-1;
Question

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

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



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



//バイトイングはどうですか?

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



Number.isInteger(23);  // true
Number.isInteger(1.5); // false
Number.isInteger("x"); // false: 

Number.isInteger()はES6標準の一部であり、IE11ではサポートされていません。

x % 1 != 0がtrueを返している間は、 NaNInfinityおよび数値以外の引数に対してfalseを返します。




数値ストリングを配列に変換し、小数点で分割します。 次に、配列に値が1つしかない場合は、文字列に10進数がないことを意味します。

if(!number.split(".")[1]){
    //do stuff
}

このようにして、整数と小数が実際に何であるかを知ることもできます。 より高度な例があります。

number_to_array = string.split(".");
inte = number_to_array[0];
dece = number_to_array[1]; 

if(!dece){
    //do stuff
}



それを10倍して10で " モジュロ "演算/除算を行い 、その2つの演算の結果がゼロであるかどうかを調べることができます。 その2つの操作の結果は、小数点の後に最初の桁を与えます。 resultが0の場合、数値は整数です。

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



function isDecimal(n){
    if(n == "")
        return false;

    var strCheck = "0123456789";
    var i;

    for(i in n){
        if(strCheck.indexOf(n[i]) == -1)
            return false;
    }
    return true;
}



Links