2012-10-25 35 views
6

我想用紅寶石圓BigDecimal。我知道我可以使用的功能全面,但紅寶石大固定數的十進制舍入

輪函數給出

(3.2).round(2) => 3.2 

我想

(3.2).round(2) => 3.20 
(3.20).round(2) => 3.20 
(3).round(2) => 3.00 
(3.578).round(2) => 3.58 

我總是希望有2位小數,3.20不是3.2

任何想法如何做到這一點?

回答

15

試試這個:

'%.2f' % 3.2 
=> "3.20" 

'%.2f' % 3 
=> "3.00" 

'%.2f' % 3.578 
=> "3.58" 

etc. 
+0

謝謝..多數民衆贊成在 – Abid

5

不同,例如,Java's BigDecimalRuby's BigDecimal沒有每個實例的精度。 Ruby BigDecimal中3.2和3.20之間的區別僅僅是格式化。

+0

斑點我不知道任何Java所以我可能會誤解。但在某些情況下,爲Ruby指定一個BigDecimal實例的精度是必須的:'require'bigdecimal'; BigDecimal.new(1/3.0)'錯誤:無法爲Rational刪除精度。 – steenslag

+0

確實如此,但有效位數僅用於獲取初始值。它沒有被「鎖定」到那個實例。 '要求'bigdecimal'; dec = BigDecimal.new(2.345,2); dec.precs#=> [18,36]和'dec.to_s('F')#=>「2.3」 –