2010-11-09 4 views
5

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

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

+0

Смотрите также http://stackoverflow.com/questions/3968265/integer-to-float –

ответ

7

На это можно ответить hoogle.

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

digitToInt :: Char -> Int 

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

digitToFloat = toEnum . digitToInt 
+0

Я знал, что существует функция типа digitToInt, но мне было слишком лениво искать ее. Благодаря! –

10

fromIntegral будет конвертировать из Int в Float.

Для Char to Float, это зависит. Если вы хотите, чтобы получить значение ASCII из полукокса (не обращая внимания 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 

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

+2

Вы можете просто сделать 'char2float п = читать [п] '. Нет необходимости в 'fromInteger'. – sepp2k

0

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

Преобразование из Int в Float:

Prelude> 1::Float 
1.0 

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

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

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