gpt4 book ai didi

math - 在 Elixir 中使 float 变圆的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-05 01:24:10 28 4
gpt4 key购买 nike

我正在尝试舍入 Float在 Elixir 中保留 2 位小数。

如果我有号码 12.555 ,我希望我的舍入函数返回 12.56
我原本以为 Float.round 是我想要的,但这个函数并不总是返回我想要的答案。

例如...

iex()> Float.round(12.555, 2)
12.55

我知道我可以通过临时功能完成这项工作,但我认为必须有更好的解决方案。

我目前的解决方案是...

iex()> round(12.555 * 100) / 100
12.56

这可以完成工作,但就像我说的那样,我只是想知道是否有更好的解决方案。

提前致谢

最佳答案

由于浮点数的工作方式,如果您想要精度,包括控制 rounding algorithms ,您需要使用诸如 Decimal 之类的库:

12.555
|> Decimal.from_float()
|> Decimal.round(2)

输出:

#Decimal<12.56>

然后你可以使用像 Decimal.to_string/2 这样的函数用于打印或 Decimal.to_float/1 ,但要注意 to_float/1也是一个不精确的操作,可能会失败。

关于math - 在 Elixir 中使 float 变圆的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580230/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com