2015-06-18 60 views
4

我创建了一个函数来测试一个给定的参数是否是平方数。JavaScript中测试给定参数是平方数的最佳方法是什么?

阅读有关此平方数:https://en.wikipedia.org/?title=Square_number

如果数字是一个平方数,则返回否则。负数也会返回false

例子:

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

现在,我使用这个方法:http://jsfiddle.net/marcusdei/ujtc82dq/5/

但是,有没有把工作做得更短更清洁的方式?

+0

完整的数字到底是什么错误的引用方法?不会比这个短得多......(而且它也很干净,IMO也是) – Daniel

+0

是的,我只是觉得这个更短,不清楚清洁,但:http://jsfiddle.net/marcusdei/ujtc82dq/7/ – mdarmanin

回答

21

试试这个:

var isSquare = function (n) { 
    return n > 0 && Math.sqrt(n) % 1 === 0; 
}; 
  1. 检查数量为正
  2. 检查sqrt是即integer

Demo

+1

我不认为你需要检查值是否大于0.另外0在技术上是一个平方数。在你的情况下,它会评估为false。 – mpn

+0

@mpn对于'0'来说是完美的方形,你是对的。对于负数,可以保存一个函数调用。 – Tushar

相关问题