Skip to content

End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

instance method

BigDecimal#round

round(p1 = v1, p2 = v2)

round(n, mode)

Round to the nearest integer (by default), returning the result as a BigDecimal if n is specified, or as an Integer if it isn’t.

Example
BigDecimal('3.14159').round #=> 3
BigDecimal('8.7').round #=> 9
BigDecimal('-9.9').round #=> -10

BigDecimal('3.14159').round(2).class.name #=> "BigDecimal"
BigDecimal('3.14159').round.class.name #=> "Integer"

If n is specified and positive, the fractional part of the result has no more than that many digits.

If n is specified and negative, at least that many digits to the left of the decimal point will be 0 in the result, and return value will be an Integer.

Example
BigDecimal('3.14159').round(3) #=> 3.142
BigDecimal('13345.234').round(-2) #=> 13300

The value of the optional mode argument can be used to determine how rounding is performed; see BigDecimal.mode.

See also #remainder #scale #quo #sign also in 3.3 · 3.2 · 3.0