Я хочу прочитать число с плавающей запятой, проверить тип, предоставленный пользователем, определить количество цифр, которое фиксируется в две цифры. Для этого:
Я реализовал эти три функции. Первая, которая считывает ввод с консоли:
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 цифры или нет. Как я могу это исправить