我这段代码:
require 'bigdecimal'
a = BigDecimal.new(1, 2)
虽然我们可以拥有这些价值观:
a.to_s #=> "0.1E1"
a.to_f #=> 1.0
我更愿意获得这个:a.to_string#=> "1.00"
您是否知道https://vimeo.com/5577540是否能够在不创建额外的#to_string方法的情况下执行此操作?
如果没有,那么在小数点后总是有两个数字的大十进制数最好的解决方案是什么?
答案 0 :(得分: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])
答案 1 :(得分:0)
如果您不需要定义可以使用的比例:
a.to_s('F') #=> "1.0"
否则您需要使用sprintf
并指定比例:
sprintf('%.02f', a) #=> "1.00"