builtins/numeric_edges_no_parens.rb
tests/_examples/builtins/numeric_edges_no_parens.rb in the metorex repository.
# A large Integer equals a Float only when the Float holds that exact value.
large = 2**64
p large == 18446744073709551616.0
p large + 1 == 18446744073709551616.0
# A Complex with an imaginary part is not a real number for `rect` and
# `polar`.
begin
Complex.rect Complex(1, 2), 3
rescue TypeError => problem
p problem.message
end
p Complex.polar 0, 1.5
p Complex.polar 2, Math::PI
# An index too large for a long is refused by name.
pair = [1, 2]
begin
pair[large]
rescue RangeError => problem
p problem.message
end
begin
pair[large..]
rescue RangeError => problem
p problem.message
end
# A hash comparing by identity equals another only when both are empty.
empty = {}.compare_by_identity
p empty == {}
held = { a: 1 }.compare_by_identity
p held == { a: 1 }
# A frozen Hash refuses a new entry.
frozen = {}.freeze
begin
frozen[:a] = 1
rescue FrozenError => problem
p problem.class
end
Output:
true
false
"not a real"
(0+0.0i)
(-2+0.0i)
"bignum too big to convert into 'long'"
"bignum too big to convert into 'long'"
true
false
FrozenError