如何在Elixir中将float转换为整数

Ani*_*ift 10 elixir

给定一个浮点数,比方说(2.0),我想将它转换为Integer类型.就我所知,Integer.parse看起来只适用于字符串.

Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2
Run Code Online (Sandbox Code Playgroud)

Jos*_*lim 24

使用trunc(2.0)round(2.0).这些都是自动导入的,因为它们是Kernel的一部分,并且它们也被允许用于保护条款.


nbw*_*ard 14

总结在这个问题上所列出的不同的答案,有写这篇文章好四个选项:trunc/1round/1floor/1,和ceil/1。都接受浮点数和整数。

截断/1

删除浮点数的小数部分。

iex> trunc(2.3)
2
iex> trunc(-2.3)
-2
Run Code Online (Sandbox Code Playgroud)

第1轮

舍入到最接近的整数。

iex> round(2.3)
2
iex> round(2.7)
3
iex> round(-2.3)
-2
iex> round(-2.7)
-3
Run Code Online (Sandbox Code Playgroud)

楼层/1

总是向下舍入。从 Elixir 1.8.0 开始可用。

iex> floor(2.3)
2
iex> floor(-2.3)
-3
Run Code Online (Sandbox Code Playgroud)

细胞/1

总是四舍五入。从 Elixir 1.8.0 开始可用。

iex> ceil(2.3)
3
iex> ceil(-2.3)
-2
Run Code Online (Sandbox Code Playgroud)