haskell中是否有一个函数,它从int转换为float,从char转换为float?
我知道有一个函数可以从char转换为int,int转换为char。
答案 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)
答案 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