如果整数,则 Ruby 将 float 舍入为 int

标签 ruby floating-point int

在 ruby​​ 中,如果 float 是整数,我想将其转换为 int。例如

a = 1.0
b = 2.5

a.to_int_if_whole # => 1
b.to_int_if_whole # => 2.5

基本上,我试图避免在任何没有小数的数字上显示“.0”。我正在寻找一种优雅的(或内置的)方式来做

def to_int_if_whole(float)
  (float % 1 == 0) ? float.to_i : float
end

最佳答案

一个简单的方法是:

class Float
  def prettify
    to_i == self ? to_i : self
  end
end

那是因为:

irb> 1.0 == 1
=> true
irb> 1 == 1.0
=> true

然后你可以这样做:

irb> 1.0.prettify
=> 1

irb> 1.5.prettify
=> 1.5

关于如果整数,则 Ruby 将 float 舍入为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077346/

相关文章:

ruby - Ruby 变量赋值中的双管道符号?

c - 使 C 浮点文字 float (而不是 double )

c - 你如何找到一个 float 最接近的非等值?

ruby-on-rails - ruby REXML : Get Value Of An XML Element

ruby - 为什么强制 2.coerce(3.3) 返回 [3.3, 2.0]?

ruby-on-rails - 如何遍历哈希列表?

c - 将浮点表达式的结果存储到 C 中的 int 变量中的正确方法是什么?

将 32 位整数复制到 64 位整数是未定义的吗?

c++ - 在 C++ 中使用 char 数组作为数学数字

python - 当数字大于 Python 的 sys.maxint 时,它们是否需要更多内存?