Ruby小数点后2位大数

Ruby big decimal with 2 numbers after the decimal point

我这个代码:

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"