2010-09-04 51 views
1

我想打印出一个浮点数,具有价值5红宝石打印出的浮动可选数字

,当它打印出来我得到的是5.0,所以我的问题是:

如何让它如此,如果该值只是5,它会打印5后面没有.0,如果它是5.2左右,它会打印出来呢?

我环顾四周,但我发现的一切都是要么强迫这种或那种方式。

有人可以帮助我在正确的方向吗?谢谢:)

回答

2

试试这个:

number.to_s.gsub(/\.?0*$/, '') 

这甚至number = "5.30" # => '5.3'工作。

+0

不错,还没有关于使用正则表达式的问题。 – 2010-09-04 11:53:03

1

一些肮脏的解决方案。

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 
+0

很好的可读解决方案。我需要修改它才能使其正常工作: a.ceil == a? a.ceil.to_i:a – 2010-09-04 11:54:01

0

你为什么要这样做? 55.000表示不同的消息,因为它们具有不同的数字significant figures。第一个表示“五个正负一半”,而后者表示“五个到最接近的千分之一”。

+0

为什么第一个表示“五个或一个半”?缺少小数位不一定意味着任何形式的四舍五入。 – 2010-09-04 20:46:42

+0

@Mladen:你可以进一步扩展吗? – 2010-09-04 22:39:55

+0

的原因是因为用户可以给出5小时的估算,但也是3.5小时。为了保持视图清晰,我不想写5.0,因为.0对用户来说只是混乱 – 2010-09-05 07:09:25