Quel est le meilleur moyen de tester si un paramètre donné est un nombre carré?

J'ai créé une fonction qui va tester pour voir si un paramètre donné est un nombre carré.

Read about square numbers here: https://en.wikipedia.org/?title=Square_number

Si le nombre est un nombre carré, il renvoie true et sinon false . Les nombres négatifs retournent aussi false .

Exemples:

isSquare(-12)//=> false
isSquare( 5)//=> false
isSquare( 9)//=> true
isSquare(25)//=> true
isSquare(27)//=> false

Right now, I am using this method: http://jsfiddle.net/marcusdei/ujtc82dq/5/

Mais, y a-t-il une façon plus courte et plus propre de faire le travail?

0
oui, je trouve juste celui-ci encore plus court, pas sûr de nettoyeur bien: jsfiddle.net/marcusdei/ujtc82dq/7
ajouté l'auteur mdarmanin, source
Qu'est-ce qui ne va pas avec la méthode référencée? Ne va pas beaucoup plus court que ça ... (et c'est assez propre aussi IMO)
ajouté l'auteur Daniel, source

2 Réponses

Essaye ça:

var isSquare = function (n) {
    return n > 0 && Math.sqrt(n) % 1 === 0;
};
  1. Check if number is positive
  2. Check if sqrt is complete number i.e. integer

Démo

0
ajouté
@mpn Pour 0 comme carré parfait, vous avez raison. Pour les nombres négatifs, un appel de fonction peut être enregistré.
ajouté l'auteur Tushar, source
Je ne pense pas que vous devez vérifier si la valeur est> 0. Aussi 0 est techniquement un nombre carré. Dans votre cas, il serait faux.
ajouté l'auteur mpn, source

J'irais certainement pour:

var isSquare = function (n) {
    return Math.sqrt(n) % 1 === 0;
};

PS: 0 est un nombre carré pour ceux qui se demandent

Démo

0
ajouté