我这段代码:
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])
关于Ruby 大十进制小数点后有 2 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847339/