我正在使用库十进制。
如果我有一个浮点十进制:
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)
但我不知道如何在这里应用它。
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。