Ruby 如何将浮点0.0转换为返回字符串0?

Ruby 如何将浮点0.0转换为返回字符串0?,ruby,Ruby,我运行的程序以浮点形式返回0.0。我需要把它转换成一个没有小数点的字符串。我该怎么做?投入和成果的一些例子如下: convert_number 0.0 # => "0" convert_number 1.5 # => "1.5" convert_number 2.0 # => "2" def convert_number n (n == n.to_i) ? n.to_i : n end > convert_number(3.0) => 3 > co

我运行的程序以浮点形式返回
0.0
。我需要把它转换成一个没有小数点的字符串。我该怎么做?投入和成果的一些例子如下:

convert_number 0.0
# => "0"

convert_number 1.5
# => "1.5"

convert_number 2.0
# => "2"
def convert_number n
  (n == n.to_i) ? n.to_i : n
end

> convert_number(3.0)
=> 3
> convert_number(3.0).to_s
=> "3"

如何对方法“convert_number”进行编码取决于您的需要,您可以使用以下方法之一:

 > 0.0.to_i.to_s
 => "0" 

 > 0.1.ceil.to_s
 => "1" 

 > 0.1.round.to_s
 => "0" 

根据您的需要,您可以使用以下方法之一:

 > 0.0.to_i.to_s
 => "0" 

 > 0.1.ceil.to_s
 => "1" 

 > 0.1.round.to_s
 => "0" 

这应该适合将浮点整数转换为普通整数的需要:

def convert_number(n)
  n == n.to_i ? n.to_i : n
end

convert_number(0.0)
=> 0
convert_number(1.5)
=> 1.5
如果需要对字符串进行额外的转换,只需将
convert\u number
的主体包装在括号中,然后调用
to\u s

def convert_number_to_s(n)
  (n == n.to_i ? n.to_i : n).to_s
end

convert_number_to_s(1.5)
=> "1.5"
convert_number_to_s(2.0)
=> "2"

这应该适合将浮点整数转换为普通整数的需要:

def convert_number(n)
  n == n.to_i ? n.to_i : n
end

convert_number(0.0)
=> 0
convert_number(1.5)
=> 1.5
如果需要对字符串进行额外的转换,只需将
convert\u number
的主体包装在括号中,然后调用
to\u s

def convert_number_to_s(n)
  (n == n.to_i ? n.to_i : n).to_s
end

convert_number_to_s(1.5)
=> "1.5"
convert_number_to_s(2.0)
=> "2"
这应该起作用:

def convert_number n
  (n == n.to_i) ? n.to_i.to_s : n.to_s
end
如果需要将截断和转换分离为字符串,惯用方法如下:

convert_number 0.0
# => "0"

convert_number 1.5
# => "1.5"

convert_number 2.0
# => "2"
def convert_number n
  (n == n.to_i) ? n.to_i : n
end

> convert_number(3.0)
=> 3
> convert_number(3.0).to_s
=> "3"
这应该起作用:

def convert_number n
  (n == n.to_i) ? n.to_i.to_s : n.to_s
end
如果需要将截断和转换分离为字符串,惯用方法如下:

convert_number 0.0
# => "0"

convert_number 1.5
# => "1.5"

convert_number 2.0
# => "2"
def convert_number n
  (n == n.to_i) ? n.to_i : n
end

> convert_number(3.0)
=> 3
> convert_number(3.0).to_s
=> "3"

此处不一定需要任何自定义逻辑,只需使用(via):

但请注意,大数字会转换为科学符号:

'%g' % 1000000.0  #=> "1e+06"

有关sprintf格式选项的更多信息,请参阅。

此处不一定需要任何自定义逻辑,只需使用(via):

但请注意,大数字会转换为科学符号:

'%g' % 1000000.0  #=> "1e+06"

有关sprintf格式选项的更多信息,请参阅。

您当前的代码是什么?你试过什么?基本上,我在做除法,为了不失去任何精度,我把一个数字除以6.0。乘法是有效的,但问题是如果结果是整数,我得到的第一个小数位是0,但我希望它自动转换回整数。可能的重复不是真的,因为例如,如果答案返回1.5,那么我不想把它转换成整数。你现在的代码是什么?你试过什么?基本上,我在做除法,为了不失去任何精度,我把一个数字除以6.0。乘法是有效的,但问题是,如果结果是整数,我得到的第一个小数位是0,但我希望它自动转换回整数。可能的重复不是真的,因为例如,如果答案返回1.5,那么我不希望它转换成整数。+1。。对我来说是新的。。未获得
%f
%g
之间的差异:(这不是一个糟糕的替代解决方案,除非指数表示法不适合OP的需要,在这种情况下,这只适用于较小的数字。+1..我不熟悉..没有得到
%f
%g
之间的差异:(这不是一个糟糕的替代解决方案,除非指数表示法不适合OP的需要,在这种情况下,这只适用于较小的数字。