Skip to content
instance method

Float#truncate

() -> ::Integer
(::Integer ndigits) -> (::Integer | ::Float)
truncate(ndigits = 0) → float or integer

Returns self truncated (toward zero) to a precision of ndigits decimal digits.

When ndigits is positive, returns a float with ndigits digits after the decimal point (as available):

Example
f = 12345.6789
f.truncate(1) # => 12345.6
f.truncate(3) # => 12345.678
f = -12345.6789
f.truncate(1) # => -12345.6
f.truncate(3) # => -12345.678

When ndigits is negative, returns an integer with at least ndigits.abs trailing zeros:

Example
f = 12345.6789
f.truncate(0)  # => 12345
f.truncate(-3) # => 12000
f = -12345.6789
f.truncate(0)  # => -12345
f.truncate(-3) # => -12000

Note that the limited precision of floating-point arithmetic may lead to surprising results:

Example
(0.3 / 0.1).truncate  #=> 2 (!)

Related: Float#round.

See also #to_s #zero? #to_r also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0