如何将十进制转换为整数?

Rat*_*iku 1 elixir

我正在使用库十进制。

如果我有一个浮点十进制:

pry(4)> a1
#Decimal<179.4>
Run Code Online (Sandbox Code Playgroud)

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

pry(5)>  Decimal.round a1, 2
#Decimal<179.40>  # <--- still float
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

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

我知道

Decimal.set_context(%Decimal.Context{Decimal.get_context | rounding: :floor})
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*kin 5

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
Run Code Online (Sandbox Code Playgroud)

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