首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在长生不老药中舍入浮点的最好方法是什么?

问在长生不老药中舍入浮点的最好方法是什么?
EN

Stack Overflow用户
提问于 2019-04-09 03:10:27
回答 2查看 4.8K关注 0票数 12

我正在尝试将长生不老药中的Float舍入到小数点后两位。

如果我有数字12.555,我希望我的取整函数返回12.56

我最初认为Float.round就是我想要的,但是这个函数并不总是返回我想要的答案。

例如..。

代码语言:javascript
复制
iex()> Float.round(12.555, 2)
12.55

我知道我可以通过一个临时函数来完成这件事,但我认为肯定有更好的解决方案。

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

代码语言:javascript
复制
iex()> round(12.555 * 100) / 100
12.56

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

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-09 06:20:06

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

代码语言:javascript
复制
12.555
|> Decimal.from_float()
|> Decimal.round(2)

输出:

代码语言:javascript
复制
#Decimal<12.56>

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

票数 12
EN

Stack Overflow用户

发布于 2019-09-12 11:07:57

如果您不想使用库,Float.ceil/2可能会对您有所帮助

代码语言:javascript
复制
iex> 12.555 |> Float.ceil(2)        
12.56
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55580230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档