Question Comment puis-je vérifier qu'un nombre est flottant ou entier?


Comment trouver qu'un nombre est float ou integer?

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

609
2017-10-07 20:55


origine


Réponses:


vérifier un reste en divisant par 1:

function isInt(n) {
   return n % 1 === 0;
}

Si vous ne savez pas que l'argument est un nombre, vous avez besoin de deux tests:

function isInt(n){
    return Number(n) === n && n % 1 === 0;
}

function isFloat(n){
    return Number(n) === n && n % 1 !== 0;
}

1068
2017-10-07 21:43



Essayez ces fonctions pour tester si une valeur est une valeur primitive numérique qui n'a pas de partie fractionnaire et qui est dans les limites de taille de ce qui peut être représenté comme un entier exact.

function isFloat(n) {
    return n === +n && n !== (n|0);
}

function isInteger(n) {
    return n === +n && n === (n|0);
}

142
2017-10-07 20:59



Pourquoi pas quelque chose comme ça:

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

81
2017-11-28 18:48



Il y a une méthode appelée Number.isInteger() qui est actuellement implémenté uniquement dans la dernière version de Firefox et fait toujours partie de la proposition EcmaScript 6. toutefois MDN fournit un polyfill pour les autres navigateurs, qui correspond à celui spécifié dans l'harmonie ECMA:

if (!Number.isInteger) {
  Number.isInteger = function isInteger (nVal) {
    return typeof nVal === "number" && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal;
  };
}

49
2017-12-26 04:57



Vous pouvez utiliser une expression régulière simple:

function isInt(value) {

    var er = /^-?[0-9]+$/;

    return er.test(value);
}

Ou vous pouvez également utiliser les fonctions ci-dessous, en fonction de vos besoins. Ils sont développés par le Projet PHPJS.

is_int() => Vérifier si le type de variable est entier et si son contenu est entier

is_float() => Vérifier si le type de variable est float et si son contenu est float

ctype_digit() => Vérifier si le type de variable est une chaîne et si son contenu n'a que des chiffres décimaux

Mise à jour 1

Maintenant, il vérifie aussi les nombres négatifs, merci pour Commentaire @ChrisBartley!


33
2018-04-24 18:36



Voici des fonctions efficaces qui vérifient si la valeur est un nombre ou peut être converti en toute sécurité à un numéro:

function isNumber(value) {
    if ((undefined === value) || (null === value)) {
        return false;
    }
    if (typeof value == 'number') {
        return true;
    }
    return !isNaN(value - 0);
}

Et pour les entiers (retournerait false si la valeur est un float):

function isInteger(value) {
    if ((undefined === value) || (null === value)) {
        return false;
    }
    return value % 1 == 0;
}

L'efficacité ici est que parseInt (ou parseNumber) est évité lorsque la valeur est déjà un nombre. Les deux fonctions d'analyse toujours Convertir en chaîne d'abord, puis tenter d'analyser cette chaîne, ce qui serait un gâchis si la valeur est déjà un nombre.

Merci aux autres posts ici pour avoir fourni d'autres idées d'optimisation!


17
2017-07-17 20:25



function isInteger(x) { return typeof x === "number" && isFinite(x) && Math.floor(x) === x; }
function isFloat(x) { return !!(x % 1); }

// give it a spin

isInteger(1.0);        // true
isFloat(1.0);          // false
isFloat(1.2);          // true
isInteger(1.2);        // false
isFloat(1);            // false
isInteger(1);          // true    
isFloat(2e+2);         // false
isInteger(2e+2);       // true
isFloat('1');          // false
isInteger('1');        // false
isFloat(NaN);          // false
isInteger(NaN);        // false
isFloat(null);         // false
isInteger(null);       // false
isFloat(undefined);    // false
isInteger(undefined);  // false

11
2018-05-07 22:05



function isInt(n) 
{
    return n != "" && !isNaN(n) && Math.round(n) == n;
}
function isFloat(n){
    return n != "" && !isNaN(n) && Math.round(n) != n;
}

fonctionne pour tous les cas.


9
2018-02-12 13:03