不知何故,我无法使用谷歌或SO ...
找到答案考虑:
require 'bigdecimal'
puts (BigDecimal.new(1)/BigDecimal.new(3)).to_s
#=> 0.333333333333333333E0
我希望能够指定100或200或1000的精度,这将打印出“0”。其次是100三,二三或三十三。
我怎样才能做到这一点?答案也适用于非重复小数,在这种情况下,精度的额外数字将用零填充。
谢谢!
答案 0 :(得分:5)
我认为问题是BigDecimal
对象的精度设置不够高。如果我使用div
代替/
明确指定操作所需的精度,我可以打印1000个小数位数:
require 'bigdecimal'
puts (BigDecimal.new(1).div(BigDecimal.new(3), 1000)).to_s
#=> 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333E0
之后,您可以使用round
限制小数位数。