Как я могу проверить, что число с плавающей запятой или целое число? - PullRequest
668 голосов
/ 08 октября 2010

Как узнать, что число float или integer?

1.25 --> float  
1 --> integer  
0 --> integer  
0.25 --> float

Ответы [ 41 ]

1 голос
/ 10 ноября 2017
try this one
function amountcheck()
    {
        var dpamt=$('#dpamt').val()/5000;
        var ints=dpamt.toString();
        var isint=ints.split('.');
        if(isint[1]>0)
        {
            alert('float value');
            return false;
        }
        else
        {   
            alert('int value');
        }
    }
1 голос
/ 23 ноября 2015

YourJS предоставляет следующие две функции, которые работают для всех чисел, включая возврат false для -Infinity и Infinity:

function isFloat(x) {
  return typeOf(x, 'Number') && !!(x % 1);
}

function isInt(x) {
  return typeOf(x, 'Number') && x % 1 == 0;
}

В связи с тем, что typeOf() является внутренней функцией YourJS, если вы хотите использовать эти определения, вы можете скачать версию только для этих функций здесь: http://yourjs.com/snippets/build/34

1 голос
/ 24 февраля 2015
function int(a) {
  return a - a === 0 && a.toString(32).indexOf('.') === -1
}

function float(a) {
  return a - a === 0 && a.toString(32).indexOf('.') !== -1
}

Вы можете добавить typeof a === 'number', если хотите исключить строки.

0 голосов
/ 13 марта 2012
parseInt(yourNumber)=== parseFloat(yourNumber)
0 голосов
/ 17 марта 2017

Я считаю это самым элегантным способом:

function isInteger(n) {
    return n === (n^0);
}

Также важно вернуть false в случае нечислового значения.

0 голосов
/ 23 августа 2016

Мне нужно было проверить входное значение, если оно целочисленное или с плавающей точкой, и для этого я придумал следующее:

function isInteger(x) {
  var integer = parseInt(x, 10);
  if (!isNaN(integer) && !isFloat(x)) {
    return true;
  }
  return false;
}

function isFloat(x) {
  var f = parseFloat(x);
  var floor = Math.floor(f);
  var fraction = f - floor;
  if (fraction > 0) {
    return true;
  }
  return false;
}

var cases = [
  "1",
  "1.00",
  "1.01",
  "0.05",
  "ab1",
  "ab1.1",
  1,
  1.00,
  1.01,
  0.05,
  1e+5,
  "",
  true,
  false,
  null,
  NaN,
  undefined,
];

console.log("isInteger()");
for (var i = 0; i < cases.length; i++) {
  console.log(cases[i], isInteger(cases[i]));
}

console.log("\nisFloat()");
for (var i = 0; i < cases.length; i++) {
  console.log(cases[i], isFloat(cases[i]));
}
0 голосов
/ 14 мая 2014

На основании всего, что я видел здесь, я создал свой собственный набор функций для проверки того, что мне нужно:

function NumberValidator() {
this.isFloat = function (n) {
    return typeof(n)==="number" && n === +n && Math.round(n) !== n;
};

this.isInteger = function (n) {
    return typeof(n)==="number" && n === +n && Math.round(n) === n;
};

this.isFloatOrInteger = function (n) {
    return this.isFloat(n) || this.isInteger(n);
};

this.isNonZeroFloatOrInteger = function (n) {
    return this.isFloatOrInteger(n) && n > 0;
};

this.isNonZeroInteger = function (n) {
    return this.isInteger(n) && n > 0;
};
}

Однако решение shime короче и с меньшим количеством проверок, поэтому оно может быть лучше.

0 голосов
/ 05 апреля 2012

Другой метод:

    function isFloat(float) {
        return /\./.test(float.toString());
    }

Может быть не так эффективен, как другие, но все же другой метод.

0 голосов
/ 13 июня 2014

Это мое:

function isInt(quale) {
    var valore = $('#'+quale).val().toLowerCase();
    if (isNaN(Number(String(valore))) || (valore.indexOf("e") > 0)) {
        // Not int
    } else {
        // Is Int!
    }
}

И это:

function isFloat(quale) {
   var valore = $('#'+quale).val();
   valore = valore.replace(",", "");
   if (isNaN(String(valore)) || (valore.indexOf("e") > 0)) {
    // Not Float
   } else {
    // Float
   }
}

Ad majora!

0 голосов
/ 25 февраля 2019

Вдохновленный ответом warfares ', я использую его для проверки ввода строки.

function validLatLng(n) {
  var isInt = function(n) { return parseInt(n) == n };
  var isFloat = function(n) { return parseFloat(n) == n };

  // For testing
  console.log("validLatLng::n", n);
  console.log("validLatLng::parseInt", parseInt(n));
  console.log("validLatLng::parseFloat", parseFloat(n));
  console.log("validLatLng::isInt", isInt(n));
  console.log("validLatLng::isFloat", isFloat(n));

  return isInt(n) || isFloat(n);
}

Вы можете проверить это на консоли с помощью:

// Invalid for my use case
validLatLng("") // or `null`, `undefined`, etc.
validLatLng("a")
validLatLng("a1100")
validLatLng("-100a")
validLatLng("a100.00")
validLatLng("-2a100.00123")

// VALID for my use case
validLatLng("100")
validLatLng("-100")
validLatLng("100.00")
validLatLng("-100.00123")
...