我想打印出一個浮點數,具有價值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