我正在尝试将长生不老药中的Float舍入到小数点后两位。
如果我有数字12.555,我希望我的取整函数返回12.56
我最初认为Float.round就是我想要的,但是这个函数并不总是返回我想要的答案。
例如..。
iex()> Float.round(12.555, 2)
12.55我知道我可以通过一个临时函数来完成这件事,但我认为肯定有更好的解决方案。
我目前的解决方案是...
iex()> round(12.555 * 100) / 100
12.56这可以做工作,但就像我说的,我只是想知道是否有更好的解决方案。
提前感谢
发布于 2019-04-09 06:20:06
由于浮点数的工作方式,如果您需要精度,包括控制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也是一个不精确的操作,可能会失败。
发布于 2019-09-12 11:07:57
如果您不想使用库,Float.ceil/2可能会对您有所帮助
iex> 12.555 |> Float.ceil(2)
12.56https://stackoverflow.com/questions/55580230
复制相似问题