bry*_*sai 2 ruby floating-point rounding
我理解由于浮点的不精确表示,下面的代码'感觉'不一致.
"%.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
Run Code Online (Sandbox Code Playgroud)
但是,有一种简单的方法可以将一致的浮点数舍入为5吗?一种方法可能是明确地进行字符串操作.是否有更简单的方法或现有的图书馆?
如果需要小数精度,请使用BigDecimal而不是浮点数.
编辑:在传递数字之前%,您必须手动将数字舍入到所需的长度,否则在舍入之前它将转换为正常的浮点数.
"%.1f" % BigDecimal('1.15').round(1) => "1.2"
"%.0f" % BigDecimal('1.5').round(0) => "2"
Run Code Online (Sandbox Code Playgroud)