ActionView::Helpers::NumberHelper provides methods for converting numbers into formatted strings.

Example:

As shown in the above example, number to currency conversion with precision 0 resulted in rounding down the number. Sometimes, we need to round up such numbers to nearest integer than to round down. We lost \$0.45 in the above example if we go by regular rounding logic.

To handle such scenarios, Rails has added round_mode parameter to number helpers.

round_mode accepts value the same as mode in Ruby BigDecimal::ROUND_MODE.

BigDecimal provides built-in support for arbitrary precision on very large or very accurate floating-point numbers in Ruby

The accepted values along with examples are:

• :up : Round away from zero
• :down, :truncate : Round towards zero (truncate)
• :half_up, :default : Round towards the nearest neighbor, unless both neighbors are equidistant, in which case round away from zero. This is the default.
• :half_down : Round towards the nearest neighbor, unless both neighbors are equidistant, in which case round towards zero.
• :half_even, :banker : Round towards the nearest neighbor, unless both neighbors are equidistant, in which case round towards the even neighbor.
• :ceiling, :ceil : Round towards positive infinity (ceil)
• :floor : Round towards negative infinity (floor)