我正在使用库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})
但是我不知道如何在这里应用它。
答案 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
的文档中找到。