2010-11-09 80 views
5

Haskell中有一个函数将int转换为float,并将char转换为float?Haskell int浮动和char浮动

我知道有一个函数可以将char转换为int,将int转换为char。

+0

参见http://stackoverflow.com/questions/3968265/integer-to-float – 2011-05-02 21:28:42

回答

7

这样的问题可以用hoogle回答。

例如,Hoogle为“字符 - > Int”和上市将做到这一点的第一个函数(ord,在其他的答案中提到,是第二个结果):

digitToInt :: Char -> Int 

虽然你需要一个功能:: Char -> Float不使用read(第三个结果向下)或digitToInt的组合和功能:: Int -> Float任务:

digitToFloat = toEnum . digitToInt 
+0

我知道像digitToInt这样的功能,但我懒得去找它。谢谢! – 2010-11-09 19:50:59

10

fromIntegral会从int转换为浮动。

对于字符浮动,它取决于。如果你想获得一个字符的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 N =读[N] '。不需要'fromInteger'。 – sepp2k 2010-11-09 18:26:06

0

如果我得到它的权利,你可以使用阅读类型类为这些目的。这意味着您可以将一些基本类型转换为其他基本类型。

从int转换为浮动:

Prelude> 1::Float 
1.0 

我不知道这意味着从字符转换为浮动 - 也许[字符]浮动或字符串到浮点数?总之:

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

退房此链接:http://book.realworldhaskell.org/read/using-typeclasses.html