我這個代碼後:紅寶石大小數與2號小數點
require 'bigdecimal'
a = BigDecimal.new(1, 2)
雖然我們可以有這些值:
a.to_s #=> "0.1E1"
a.to_f #=> 1.0
我寧願獲得這一個:a.to_string# =>"1.00"
你知道如果Ruby's BigDecimal能夠做到這一點,而無需創建一個額外的#to_string方法嗎?
如果不是這樣,這將是有小數點後始終爲2號大的十進制數的最佳解決方案?
我這個代碼後:紅寶石大小數與2號小數點
require 'bigdecimal'
a = BigDecimal.new(1, 2)
雖然我們可以有這些值:
a.to_s #=> "0.1E1"
a.to_f #=> 1.0
我寧願獲得這一個:a.to_string# =>"1.00"
你知道如果Ruby's BigDecimal能夠做到這一點,而無需創建一個額外的#to_string方法嗎?
如果不是這樣,這將是有小數點後始終爲2號大的十進制數的最佳解決方案?
它可以,但是這是一種輸出格式。
sprintf("%.02f", a)
# => "1.00"
可以定義這樣的方法:
class BigDecimal
def to_string
sprintf("%.02f", self)
end
end
a.to_string
=> "1.00"
正如@CarySwoveland建議,你也可以這樣寫
sprintf("%.02f" % a)
sprintf("%.02f %.02f %.02f" % [a, b, c])
如果您不需要定義您可以使用的比例尺:
a.to_s('F') #=> "1.0"
否則,你就需要使用sprintf
,並指定規模:
sprintf('%.02f', a) #=> "1.00"
...或' 「%.02f」 %A#=> 「1.00」',它可以很方便,當你有類似'「%.02f%.02f%.02f」%[a,b,c]#=>「1.00 2.00 3.00」'。 –
@CarySwoveland很好! – pangpang