如何找到完美正方形的平方根?

时间:2016-02-03 23:04:36

标签: scala

我正在完成这个简单的任务,实现这个功能试图在Scala中找到一个完美正方形的平方根,然后我用这个简单的测试方法测试它。我做错了什么?

def squareRootOfPerfectSquare(a: Int): Option[Int] = 
  if (scala.math.sqrt(a) % 1 == 0) 
    scala.math.sqrt(a)
  else 
    -1

2 个答案:

答案 0 :(得分:5)

当您将返回类型指定为Some时,您应该返回NoneOption[T]

def squareRootOfPerfectSquare(a: Int): Option[Int] = {
  val sqrt = math.sqrt(a)
  if (sqrt % 1 == 0)
    Some(sqrt.toInt)
  else
    None
}

答案 1 :(得分:0)

我想说最好的方法是留在Int世界,以避免双重的任何舍入和精度问题

def squareRootOfPerfectSquare(a: Int): Option[Int] = {
  int sqrt = (int) Math.round(math.sqrt(a));
  if (sqrt * sqrt == a)
    Some(sqrt)
  else
    None
}