January 2008
Beginner to intermediate
446 pages
14h 45m
English
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.
Numericand 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 Integervalues:
# 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 >= ...