如何在 Elixir 中将浮点数转换为整数

问题描述 投票:0回答:3

给定一个浮点数,例如(2.0),我想将其转换为整数类型。据我所知,Integer.parse 似乎只适用于字符串。

Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2
elixir
3个回答
42
投票

使用

trunc(2.0)
round(2.0)
。这些是自动导入的,因为它们是Kernel的一部分,并且它们也允许出现在保护条款中。


38
投票

总结这个问题上列出的不同答案,在撰写本文时有四个不错的选择:

trunc/1
round/1
floor/1
ceil/1
。全部接受浮点数和整数。

截断/1

删除浮点数的小数部分。

iex> trunc(2.3)
2
iex> trunc(-2.3)
-2

轮/1

四舍五入到最接近的整数。

iex> round(2.3)
2
iex> round(2.7)
3
iex> round(-2.3)
-2
iex> round(-2.7)
-3

楼/1

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

iex> floor(2.3)
2
iex> floor(-2.3)
-3

天花板/1

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

iex> ceil(2.3)
3
iex> ceil(-2.3)
-2

2
投票

使用

trunc(number)
函数,它是一个内核函数并且自动导入。

此功能的

ElixirDocs

返回数字的整数部分。


示例:

trunc(5.4)    -->    5

trunc(-5.99)  -->   -5

trunc(-5)     -->   -5
© www.soinside.com 2019 - 2024. All rights reserved.