Haskell int 到 float 和 char 到 float

发布于 2024-10-01 13:42:36 字数 101 浏览 2 评论 0原文

haskell中有一个函数可以将int转换为float,从char转换为float吗?

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

Is there a function in haskell which converts from int to float, and from char to float?

I know that there is a function that converts from char to int and int to char.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

月下伊人醉 2024-10-08 13:42:36

fromIntegral 将从 Int 转换为 Float。

对于 Char 来说,要浮动,这取决于情况。如果你想获取Char的ASCII值(暂时忽略Unicode),请使用Data.Char.ord:

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

如果你想读取Char的数字,即'2'成为值2,您可以这样做:

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

Prelude Data.Char> char2float '2'
2.0

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

fromIntegral will convert from Int to Float.

For Char to Float, it depends. If you want to get the ASCII value of a Char (ignoring Unicode for now), use Data.Char.ord:

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

If you want to read the digit of a Char, i.e. '2' becomes the value 2, you can do this:

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

Prelude Data.Char> char2float '2'
2.0

If you're going to do a lot of this, you might consider using an actual parsing library to get actual error handling.

丑丑阿 2024-10-08 13:42:36

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

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

digitToInt :: Char -> Int

尽管您需要一个函数 :: Char -> Float 确实要求使用 read (第三个结果向下)或 digitalToInt 和函数 :: Int ->浮动

digitToFloat = toEnum . digitToInt

Questions like this can be answered with hoogle.

For example, Hoogle for "Char -> Int" and the first function listed will do it (ord, mentioned in other answers, is the second result):

digitToInt :: Char -> Int

Though your need for a function :: Char -> Float does mandate using read (third result down) or a combination of digitToInt and a function :: Int -> Float:

digitToFloat = toEnum . digitToInt
白云不回头 2024-10-08 13:42:36

您尝试过吗:

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

另外请参阅此处

did you try:

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

Additionally see here

花桑 2024-10-08 13:42:36

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

从 Int 转换为 Float:

Prelude> 1::Float
1.0

但是 我不知道这意味着从 char 转换为 Float - 也许 [Char] 转换为 Float 或者 String 转换为 Float?无论如何:

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

查看此链接:http://book.realworldhaskell.org/read/using-类型类.html

If I get it right, you can use Read typeclass for these purposes. And it means you can convert some basic types to some other basic types.

Converting from Int to a Float:

Prelude> 1::Float
1.0

BUT I don't know which means converting from char to Float - maybe [Char] to Float or String to Float? Anyway:

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

Check out this link: http://book.realworldhaskell.org/read/using-typeclasses.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文