给定一个浮点数,比方说(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)
nbw*_*ard 14
总结在这个问题上所列出的不同的答案,有写这篇文章好四个选项:trunc/1,round/1,floor/1,和ceil/1。都接受浮点数和整数。
删除浮点数的小数部分。
iex> trunc(2.3)
2
iex> trunc(-2.3)
-2
Run Code Online (Sandbox Code Playgroud)
舍入到最接近的整数。
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)
总是向下舍入。从 Elixir 1.8.0 开始可用。
iex> floor(2.3)
2
iex> floor(-2.3)
-3
Run Code Online (Sandbox Code Playgroud)
总是四舍五入。从 Elixir 1.8.0 开始可用。
iex> ceil(2.3)
3
iex> ceil(-2.3)
-2
Run Code Online (Sandbox Code Playgroud)