This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module TTFunk
|
||||
# Scientific number representation
|
||||
class SciForm
|
||||
# Significand
|
||||
# @return [Float, Integer]
|
||||
attr_reader :significand
|
||||
|
||||
# Exponent
|
||||
# @return [Float, Integer]
|
||||
attr_reader :exponent
|
||||
|
||||
# @param significand [Float, Integer]
|
||||
# @param exponent [Float, Integer]
|
||||
def initialize(significand, exponent = 0)
|
||||
@significand = significand
|
||||
@exponent = exponent
|
||||
end
|
||||
|
||||
# Convert to Float.
|
||||
#
|
||||
# @return [Float]
|
||||
def to_f
|
||||
significand * (10**exponent)
|
||||
end
|
||||
|
||||
# Check equality to another number.
|
||||
#
|
||||
# @param other [Float, SciForm]
|
||||
# @return [Boolean]
|
||||
def ==(other)
|
||||
case other
|
||||
when Float
|
||||
other == to_f # rubocop: disable Lint/FloatComparison
|
||||
when self.class
|
||||
other.significand == significand &&
|
||||
other.exponent == exponent
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
alias eql? ==
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user