我想打印出一个浮点数,具有价值5
红宝石打印出的浮动可选数字
,当它打印出来我得到的是5.0
,所以我的问题是:
如何让它如此,如果该值只是5
,它会打印5
后面没有.0
,如果它是5.2
左右,它会打印出来呢?
我环顾四周,但我发现的一切都是要么强迫这种或那种方式。
有人可以帮助我在正确的方向吗?谢谢:)
我想打印出一个浮点数,具有价值5
红宝石打印出的浮动可选数字
,当它打印出来我得到的是5.0
,所以我的问题是:
如何让它如此,如果该值只是5
,它会打印5
后面没有.0
,如果它是5.2
左右,它会打印出来呢?
我环顾四周,但我发现的一切都是要么强迫这种或那种方式。
有人可以帮助我在正确的方向吗?谢谢:)
试试这个:
number.to_s.gsub(/\.?0*$/, '')
这甚至number = "5.30" # => '5.3'
工作。
一些肮脏的解决方案。
1.
a = 5.0
puts a.ceil == a ? a.ceil : a
2.
5.1.to_s.chomp ".0" #=> 5.1
5.0.to_s.chomp ".0" #=> 5
很好的可读解决方案。我需要修改它才能使其正常工作: a.ceil == a? a.ceil.to_i:a – 2010-09-04 11:54:01
你为什么要这样做? 5
和5.000
表示不同的消息,因为它们具有不同的数字significant figures。第一个表示“五个正负一半”,而后者表示“五个到最接近的千分之一”。
为什么第一个表示“五个或一个半”?缺少小数位不一定意味着任何形式的四舍五入。 – 2010-09-04 20:46:42
@Mladen:你可以进一步扩展吗? – 2010-09-04 22:39:55
的原因是因为用户可以给出5小时的估算,但也是3.5小时。为了保持视图清晰,我不想写5.0,因为.0对用户来说只是混乱 – 2010-09-05 07:09:25
不错,还没有关于使用正则表达式的问题。 – 2010-09-04 11:53:03