Haskell int плавать и полукокса плавать - PullRequest
5 голосов
/ 09 ноября 2010

Есть ли в haskell функция, которая преобразует из int в float и из char в float?

Я знаю, что есть функция, которая преобразует из char в int и int в char.

Ответы [ 4 ]

10 голосов
/ 09 ноября 2010

fromIntegral конвертируется из Int в Float.

Для Чарда, чтобы Плавать, это зависит. Если вы хотите получить значение ASCII для Char (игнорируя Unicode на данный момент), используйте Data.Char.ord:

Prelude Data.Char> fromIntegral (ord '2') :: Float
50.0

Если вы хотите прочитать цифру символа, то есть '2' становится значением 2, вы можете сделать это:

char2float :: Char -> Float
char2float n = fromInteger (read [n])

Prelude Data.Char> char2float '2'
2.0

Если вы собираетесь сделать многое из этого, вы можете рассмотреть возможность использования фактической библиотеки синтаксического анализа для получения фактической обработки ошибок.

7 голосов
/ 09 ноября 2010

На подобные вопросы можно ответить с помощью hoogle .

Например, Hoogle для «Char -> Int» и первая функция в списке сделает это (ord, упомянутый в других ответах, является вторым результатом):

digitToInt :: Char -> Int

Хотя ваша потребность в функции :: Char -> Float действительно требует использования read (третий результат вниз) или комбинации digitToInt и функции :: Int -> Float * * 1014

digitToFloat = toEnum . digitToInt
2 голосов
/ 09 ноября 2010

Вы пробовали:

intToFloat :: Int -> Float
intToFloat n = fromInteger (toInteger n)

Дополнительно смотрите здесь

0 голосов
/ 30 марта 2011

Если я правильно понял, вы можете использовать Read typeclass для этих целей.А это означает, что вы можете конвертировать некоторые базовые типы в некоторые другие базовые типы.

Преобразование из Int в число с плавающей точкой:

Prelude> 1::Float
1.0

НО Я не знаю, какиеозначает преобразование из char в Float - может быть [Char] во Float или String во Float?В любом случае:

Prelude> read("1")::Float
1.0

Проверьте эту ссылку: http://book.realworldhaskell.org/read/using-typeclasses.html

...