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的需要,在这种情况下,这只适用于较小的数字。