1.1 "%.1f" % 1.15 # => 1.1 "%.1f" % 1.16 # => 1.2-6ren">
gpt4 book ai didi

ruby - Ruby 中 float 的一致舍入

转载 作者:数据小太阳 更新时间:2023-10-29 08:21:43 26 4
gpt4 key购买 nike

我理解由于 float 的不精确表示,以下代码“感觉”不一致。

"%.1f" % 1.14 # => 1.1
"%.1f" % 1.15 # => 1.1
"%.1f" % 1.16 # => 1.2
"%.0f" % 1.4 # => 1
"%.0f" % 1.5 # => 2
"%.0f" % 1.6 # => 2

但是,是否有一种简单的方法可以将一致的 float 四舍五入到 5?一种方法可能是显式地进行字符串操作。有没有更简单的方法或现有的库?

最佳答案

如果你想要小数精度,使用BigDecimal而不是花车。

编辑:在将数字传递给 % 之前,您必须手动将数字四舍五入到所需的长度,否则它会在四舍五入之前转换为普通 float 。

"%.1f" % BigDecimal('1.15').round(1) => "1.2"
"%.0f" % BigDecimal('1.5').round(0) => "2"

关于ruby - Ruby 中 float 的一致舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1950541/

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