Je cherche un moyen facile en JavaScript pour vérifier si un nombre a une décimale (afin de déterminer s'il s'agit d'un entier). Par exemple,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
Je cherche un moyen facile en JavaScript pour vérifier si un nombre a une décimale (afin de déterminer s'il s'agit d'un entier). Par exemple,
23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}
L'utilisation du module fonctionnera:
num % 1 != 0
// 23 % 1 = 0
// 23.5 % 1 = 0.5
Notez que cela est basé sur la valeur numérique du nombre, quel que soit le format. Il traite les chaînes numériques contenant des nombres entiers avec un point décimal fixe de la même manière que les entiers:
'10.0' % 1; // returns 0
10 % 1; // returns 0
'10.5' % 1; // returns 0.5
10.5 % 1; // returns 0.5
20.0
a un point décimal par programme, sauf s'il est exprimé sous forme de chaîne. De plus, aucune des autres solutions n'a obtenu un vote négatif pour ne pas avoir abordé cela ;-)"10."
est un nombre entier et le résultat sera exactement le même que"10"
ou10
.Number.isInteger () fait partie de la norme ES6 et n'est pas pris en charge dans IE11.
Il retourne faux pour
NaN
,Infinity
et les arguments non numériques tout enx % 1 != 0
renvoie true.la source
Number.isInteger(12.0)
retournetrue
.Number.isInteger('1e3')
estfalse
, même siNumber.isInteger(1e3)
est vrai. En supposant que l'intention de la question est de trouver des valeurs non entières (plutôt que la présence réelle d'un point décimal dans la représentation), la valeur de chaîne '12 .0 ' devrait passer car elle représente un entier, mais là encore, elle l'Number.isInteger('12.0')
estfalse
.number
est entier ou non. Si votre entrée est une chaîne, vous devez la convertir en unenumber
première, par exemple viaparseFloat()
, bien sûr.Ou vous pouvez simplement utiliser ceci pour savoir s'il ne s'agit PAS d'une décimale:
la source
yournumber.toString.indexOf(".")
La solution la plus courante consiste à supprimer la partie entière du nombre et à la comparer à zéro comme suit:
la source
startVal != Math.floor(startVal)
?Math.Floor
fonction prend une valeur décimale et la plus grande valeur décimale autorisée en JavaScript est2^53 - 1
ou9007199254740991
. Étant donné qu'il893144042145698745.3
est supérieur à ce maximum, la fonction échouera.Simple mais efficace!
la source
Math.floor(3.0) == 3.0
est vrai,Math.floor(3.3) == 3.3
est faux// Qu'en est-il de l'octet?
Je me sens toujours un peu mal pour les opérateurs de bits en javascript-
ils ne font pratiquement pas d'exercice.
la source
>>
convertit la valeur en un entier 32 bits signé .Assez cool et fonctionne aussi pour des choses comme XX.0! Cela fonctionne parce que Math.floor () coupe toute décimale s'il en a une, donc si le plancher est différent du nombre d'origine, nous savons que c'est une décimale! Et pas de conversions de chaînes :)
la source
la source
num= 999999999999999999999
.Number.isInteger()
est probablement le plus concis. Il renvoie vrai s'il s'agit d'un entier et faux s'il ne l'est pas.la source
la source
une fois passé un nombre,
parseInt()
renvoie simplement le nombre sous la forme int:la source
parseInt(3.0) === 3.0 // true
convertir la chaîne numérique en tableau, divisé par un point décimal. Ensuite, si le tableau n'a qu'une seule valeur, cela signifie aucune décimale dans la chaîne.
De cette façon, vous pouvez également connaître les nombres entiers et décimaux. un exemple plus avancé serait.
la source
Voici un extrait de ma bibliothèque de garde (inspiré par Effective JavaScript par David Herman):
la source
Vous pouvez le multiplier par 10 puis faire une opération / division " modulo " avec 10 , et vérifier si le résultat de ces deux opérations est nul. Le résultat de ces deux opérations vous donnera le premier chiffre après le point décimal. Si le résultat est égal à zéro, le nombre est un nombre entier.
la source
la source
Vous pouvez utiliser les opérations au niveau du bit qui ne modifient pas la valeur (
^ 0
ou~~
) pour supprimer la partie décimale, qui peut être utilisée pour l'arrondi. Après avoir arrondi le nombre, il est comparé à la valeur d'origine:la source
la source
Vous pouvez utiliser la fonction suivante pour vérifier si un nombre a des décimales:
Donc, apparemment, certains utilisateurs veulent des explications. Je vais le décomposer: (num% 1)
Les parenthèses signifient effectuer ces opérations en premier. num - une variable transmise par la fonction. % - un symbole de module qui tente de diviser le nombre gauche par la droite. S'il y a un reste, il le renvoie sous forme décimale. S'il se divise également, il renvoie 0.
Donc, résumez ce que nous avons jusqu'à présent., (Num% 1) renverra:
0 lorsqu'il est divisé également OU #. ##### sinon
0 == faux.
[ANY_NUMBER_NOT_ZERO] == true.
Exemples: nouveau booléen (0) est faux nouveau booléen (12312.1231) est vrai
Autres alternatives: un utilisateur aurait pu essayer de renvoyer la valeur de (num% 1). Puisque return (0) est faux et return (1.213113) est vrai.
Mais je voulais retourner une valeur booléenne. Donc, comme raccourci pour forcer une valeur en booléen, j'ai ajouté un! symbole devant elle.
Autant que vous le savez.,! signifie NON. Mais il force également une valeur à un booléen.
Depuis le! symobol force la valeur dans un booléen et il inverse sa valeur. J'utilise !! pour forcer la valeur en booléen et inverser sa valeur à sa valeur booléenne d'origine.
la source
La fonction pour le numéro de chèque est le nombre décimal ou entier
la source
Peut-être que cela fonctionne pour vous?
Il utilise l'expression régulière pour vérifier s'il y a une virgule dans le nombre, et s'il n'y en a pas, il ajoutera la virgule et la bande.
la source
Utilisez ce qui suit si la valeur est une chaîne (par exemple de
<input
):J'ajoute
.toString()
à floor pour le faire fonctionner également pour les cas oùvalue == "1."
(se termine par un séparateur décimal ou une autre chaîne).Math.floor
Retourne également toujours une valeur afin de.toString()
ne jamais échouer.la source