Haskell int浮动,char浮动

时间:2010-11-09 17:56:10

标签: haskell floating-point int

haskell中是否有一个函数,它从int转换为float,从char转换为float?

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

4 个答案:

答案 0 :(得分:10)

fromIntegral将从Int转换为Float。

对于Char to Float来说,这取决于。如果要获取Char的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

如果您要做很​​多这样的事情,可以考虑使用实际的解析库来实现错误处理。

答案 1 :(得分:7)

hoogle可以回答这样的问题。

例如,Hoogle为“Char - > Int”并且列出的第一个函数将执行此操作(ord,在其他答案中提到,是第二个结果):

digitToInt :: Char -> Int

虽然您对函数:: Char -> Float的需求确实要求使用read(第三个结果向下)或者使用digitToInt和函数:: Int -> Float的组合:

digitToFloat = toEnum . digitToInt

答案 2 :(得分:2)

你试过了吗?

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

Additionally see here

答案 3 :(得分:0)

如果我做对了,你可以使用Read类型类来实现这些目的。这意味着您可以将一些基本类型转换为其他基本类型。

从Int转换为Float:

Prelude> 1::Float
1.0

我不知道哪个意味着从char转换为Float - 也许[Char]为Float或String to Float?无论如何:

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

点击此链接:http://book.realworldhaskell.org/read/using-typeclasses.html