1

不知何故,我无法使用谷歌或 SO 找到答案......

考虑:

require 'bigdecimal'

puts (BigDecimal.new(1)/BigDecimal.new(3)).to_s

#=> 0.333333333333333333E0

我希望能够指定 100 或 200 或 1000 的精度,这将打印出“0”。接下来分别是 100 个三分球、200 个三分球或 1000 个三分球。

我怎样才能做到这一点?答案也应该适用于非重复小数,在这种情况下,额外的精度数字将用零填充。

谢谢!

4

1 回答 1

5

我认为问题在于BigDecimal对象没有将其精度设置为足够高的值。如果我通过使用div而不是明确指定操作所需的精度,则可以打印 1000 个小数位/

require 'bigdecimal'

puts (BigDecimal.new(1).div(BigDecimal.new(3), 1000)).to_s

#=> 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333E0

之后,您可以使用 限制小数位数round

于 2013-07-10T12:13:45.767 回答