我有这个十进制数 Elixir:
c1 = Decimal.div(a1, b1)
# => #Decimal<0.006453859622556080696687234694>
Run Code Online (Sandbox Code Playgroud)
如何将其四舍五入为小数点后位数较少的较短数字?
正如@Dogbert 在评论中所说 - 获取round数字的最简单方法:
iex> alias Decimal, as: D
nil
iex> d = D.div(D.new(1), D.new(3))
#Decimal<0.3333333333333333333333333333>
iex> D.round(d, 5)
#Decimal<0.33333>
Run Code Online (Sandbox Code Playgroud)
编辑:
以下内容并不完全正确!!精度是小数系数中的位数,而不是实际的数字四舍五入。因此,如果您将精度设置为 5,然后对数字进行一些计算,您将只能得到系数总位数等于 5 的数字。例如:
iex> D.set_context(%D.Context{D.get_context | precision: 5})
:ok
iex> a = D.div(D.new(100.12345), D.new(3))
#Decimal<33.374>
Run Code Online (Sandbox Code Playgroud)
我真的很抱歉完全错误的信息!
但是,如果您希望每个操作都四舍五入,那么您可以
Context先设置,设置后,Decimal将在每个操作中使用新设置的精度。Run Code Online (Sandbox Code Playgroud)iex> D.set_context(%D.Context{D.get_context | precision: 5}) :ok iex> a = D.div(D.new(1), D.new(3)) #Decimal<0.33333> iex> b = D.new("0.006453859622556080696687234694") #Decimal<0.006453859622556080696687234694> iex> D.add(a,b) #Decimal<0.33978>请注意,解析数字时
Decimal.new/1不Context考虑。仅当您使用某些操作时它才会使用它Decimal。
| 归档时间: |
|
| 查看次数: |
6372 次 |
| 最近记录: |