给定一个浮点数,例如(2.0),我想将其转换为整数类型。据我所知,Integer.parse 似乎只适用于字符串。
Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2
总结这个问题上列出的不同答案,在撰写本文时有四个不错的选择:
trunc/1
、round/1
、floor/1
和ceil/1
。全部接受浮点数和整数。
删除浮点数的小数部分。
iex> trunc(2.3)
2
iex> trunc(-2.3)
-2
四舍五入到最接近的整数。
iex> round(2.3)
2
iex> round(2.7)
3
iex> round(-2.3)
-2
iex> round(-2.7)
-3
始终向下舍入。从 Elixir 1.8.0 开始可用。
iex> floor(2.3)
2
iex> floor(-2.3)
-3
始终四舍五入。从 Elixir 1.8.0 开始可用。
iex> ceil(2.3)
3
iex> ceil(-2.3)
-2
使用
trunc(number)
函数,它是一个内核函数并且自动导入。
此功能的ElixirDocs:
返回数字的整数部分。
示例:
trunc(5.4) --> 5
trunc(-5.99) --> -5
trunc(-5) --> -5