Укажите количество цифр для ввода-вывода [Float] scala - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу прочитать число с плавающей запятой, проверить тип, предоставленный пользователем, определить количество цифр, которое фиксируется в две цифры. Для этого:

Я реализовал эти три функции. Первая, которая считывает ввод с консоли:

  def readFloat: IO[Float] = IO {
    scala.io.StdIn.readFloat()
  }

Другая функция, которая проверяет, является ли ввод плавающим или нет:

def findDataType(x: Any): IO[Unit] = x match {
    case x: Int =>
      IO(println("Integer identified, provide a Float with 2 digits"))
    case x: Float => IO(println("Float identified, Thanks"))
    case _ =>
      IO(println("DataType not identified, , provide a Float with 2 digits"))
  }

, а третья проверяет число цифры:

 def valueWith2digits(v: Float): Boolean = {
    val comp = BigDecimal(v)
      .setScale(2, BigDecimal.RoundingMode.HALF_DOWN)
      .toFloat
    if (v.toFloat == comp) true else false
  }

Функция принимает Float, но у меня есть IO [Float]. Я не мог понять, как развернуть предоставленное значение, чтобы проверить, были ли даны 2 цифры или нет. Как я могу это исправить

...