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

时间:2018-01-12 19:43:21

标签: elixir

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

Integer.parse(2.0)
(FunctionClauseError) no function clause matching in Integer.count_digits/2

4 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:3)

从Elixir 1.8.0开始,内核模块还具有floor/1ceil/1

iex(1)> floor(2.3)
2
iex(2)> ceil(2.3)
3

答案 2 :(得分:1)

使用 trunc(number) 函数,它是内核函数并自动导入。

Elixir Docs 这个函数:

<块引用>

返回数字的整数部分。


示例:

trunc(5.4)    -->    5

trunc(-5.99)  -->   -5

trunc(-5)     -->   -5

答案 3 :(得分:0)

你是对的Integer.parse/2函数需要二进制作为参数,如docs所示。 但是,您可以根据自己的要求使用Float.floor/2Float.ceil/2Float.round/2