2010-09-04 33 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