Numbers and Math
Chapter 3 covered the various Numeric
subclasses in Ruby, explained how to write numeric literals in Ruby, and
documented Ruby’s integer and floating-point arithmetic. Here we expand
on that chapter to cover numeric APIs and other math-related
classes.
Numeric Methods
Numeric
and its subclasses define a number of useful predicates for
determining the class or testing the value of a number. Some of these
predicates work only for Float
values, and some work only for Integer
values:
# General Predicates 0.zero? # => true (is this number zero?) 1.0.zero? # => false 0.0.nonzero? # => nil (works like false) 1.nonzero? # => 1 (works like true) 1.integer? # => true 1.0.integer? # => false 1.scalar? # => true: not a complex number. Ruby 1.9. 1.0.scalar? # => true: not a complex number. Ruby 1.9. Complex(1,2).scalar? # => false: a complex number. require 'complex' in 1.8 # Integer predicates (Ruby 1.9 and 1.8.7) 0.even? # => true 0.odd? # => false # Float predicates ZERO, INF, NAN = 0.0, 1.0/0.0, 0.0/0.0 # Constants for testing ZERO.finite? # => true: is this number finite? INF.finite? # => false NAN.finite? # => false ZERO.infinite? # => nil: is this number infinite? Positive or negative? INF.infinite? # => 1 -INF.infinite? # => -1 NAN.infinite? # => nil ZERO.nan? # => false: is this number not-a-number? INF.nan? # => false NAN.nan? # => true
Numeric and its subclasses define various methods for rounding numbers:
# Rounding methods 1.1.ceil # => 2: ceiling: smallest integer >= ...
Get The Ruby Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.