ruby - 如何在 Ruby 中将 float 舍入到指定数量的有效数字?

标签 ruby floating-point significant-digits

如果有一个等价于 R's signif 的东西就好了Ruby 中的函数。

例如:

>> (11.11).signif(1)
10
>> (22.22).signif(2)
22
>> (3.333).signif(2)
3.3
>> (4.4).signif(3)
4.4 # It's usually 4.40 but that's OK. R does not print the trailing 0's
    # because it returns the float data type. For Ruby we want the same.
>> (5.55).signif(2)
5.6

最佳答案

可能有更好的方法,但这似乎工作正常:

class Float
  def signif(signs)
    Float("%.#{signs}g" % self)
  end
end

(1.123).signif(2)                    # => 1.1
(11.23).signif(2)                    # => 11.0
(11.23).signif(1)                    # => 10.0

关于ruby - 如何在 Ruby 中将 float 舍入到指定数量的有效数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382619/

相关文章:

c - 与指针大小相同的浮点类型

matlab - 四舍五入到 n 位有效数字

binary - 浮点精度是可变的还是不变的?

r - 如何在 xtable 输出中指定小数位而不是有效数字

mysql - 为什么 Rails 将 TEXT 列截断为 65535 个字符?

ruby - Docker:必须将此 bundle 文件使用Bundler 2或更高版本

ruby - Rails validates_presence_of 正在检查保存的记录而不是编辑的记录

ruby - Rack:单个 Rack 应用程序的多个 session cookie

string - 将 IEEE 754 double 转换为字符串的算法?

c++ - 使用 C/C++ 高效反序列化由 float 、标记和空行组成的字符串