如何转换小数使其变为整数?

时间:2018-08-26 04:09:19

标签: elixir

我正在使用库Decimal。

如果我有一个 float 小数:

pry(4)> a1
#Decimal<179.4>

如何转换为十进制整数或Elixir整数?我想我应该使用回合。

pry(5)>  Decimal.round a1, 2
#Decimal<179.40>  # <--- still float

但这不起作用。

我希望能够选择:向上或向下取整。即179或180。

我知道

Decimal.set_context(%Decimal.Context{Decimal.get_context | rounding: :floor})

但是我不知道如何在这里应用它。

1 个答案:

答案 0 :(得分:4)

Decimal.round/3接受mode作为第三个参数。除非您想对所有内容应用相同的舍入上下文,否则这里不需要上下文。

dec = Decimal.from_float(3.14)
dec |> Decimal.round() |> Decimal.to_integer()
#⇒ 3
dec |> Decimal.round(0, :down) |> Decimal.to_integer()
#⇒ 3
dec |> Decimal.round(0, :up) |> Decimal.to_integer()
#⇒ 4

可用模式的列表可以在Decimal.Context的文档中找到。