Введите число в научной записи, конвертируйте в Integral в Haskell - PullRequest
0 голосов
/ 03 октября 2018

Глядя здесь: https://hackage.haskell.org/package/scientific

А здесь: https://wiki.haskell.org/Converting_numbers

Я бы ожидал, что смогу ввести число в виде строки в научной нотации

Prelude Data.Scientific> read "1e100" :: Scientific
1.0e100

И преобразовать в целое число так:

Prelude Data.Scientific> (read "1e100" :: Scientific ) :: Int

<interactive>:7:2: error:
    • Couldn't match expected type ‘Int’ with actual type ‘Scientific’
    • In the expression: (read "1e100" :: Scientific) :: Int
      In an equation for ‘it’: it = (read "1e100" :: Scientific) :: Int

Это не похоже на работу.Как я могу преобразовать свой научный тип в целое число?

1 Ответ

0 голосов
/ 03 октября 2018

Вы хотите использовать toUnboundedInteger (или, может быть, toBoundedInteger, я не уверен, на что ссылается граница 10^e).Сигнатура:

toUnboundedInteger :: Scientific -> Maybe Integer

Итак, неофициально, функция проверяет, является ли параметр Scientific целочисленным (например, это может быть число с плавающей запятой).Если это число с плавающей запятой, возвращаемый результат равен Nothing, иначе это Just целое число, которое вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...