class Numeric
Public Instance Methods
add(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 5 def add(num) self + num end
at_least(lower)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 9 def at_least(lower) self >= lower ? self : lower end
at_most(upper)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 13 def at_most(upper) self <= upper ? self : upper end
close?(number, epsilon = 0.01)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 17 def close?(number, epsilon = 0.01) return self == number if epsilon.zero? a = to_f b = number.to_f if a.zero? || b.zero? (a - b).abs < epsilon else (a / b - 1).abs < epsilon end end
decrement(amount = 1.0)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 30 def decrement(amount = 1.0) self - amount end
delimit(options = {})
click to toggle source
# File lib/lite/ruby/numeric.rb, line 34 def delimit(options = {}) delimiter = options[:delimiter] || ',' separator = options[:separator] || '.' digits, decimals = to_s.split('.') digits = digits.reverse.chars.each_slice(3).map(&:join).join(delimiter).reverse return digits unless decimals [digits, decimals].join(separator) end
delta(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 46 def delta(num) (self - num).abs end
distance(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 50 def distance(num) self - num end
divide(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 54 def divide(num) return num if num.zero? self / num end
equal_to?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 60 def equal_to?(num) self == num end
Also aliased as: eq?
fraction()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 64 def fraction (self - truncate).abs end
fraction?()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 68 def fraction? fraction.to_d != 0.0.to_d end
greater_than?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 72 def greater_than?(num) num < self end
Also aliased as: gt?
greater_than_or_equal_to?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 76 def greater_than_or_equal_to?(num) num <= self end
Also aliased as: gteq?
increment(amount = 1.0)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 80 def increment(amount = 1.0) self + amount end
inside?(start, finish)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 84 def inside?(start, finish) (start < self) && (finish > self) end
less_than?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 88 def less_than?(num) num > self end
Also aliased as: lt?
less_than_or_equal_to?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 92 def less_than_or_equal_to?(num) num >= self end
Also aliased as: lteq?
many?()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 96 def many? to_f > 1.0 end
markdown_percentage(percent)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 100 def markdown_percentage(percent) to_f * ((100.0 - percent.to_f) / 100.0) end
markup_percentage(percent)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 104 def markup_percentage(percent) to_f + (to_f * (percent.to_f / 100.0)) end
multiple_of?(number)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 112 def multiple_of?(number) return zero? if number.zero? modulo(number).zero? end
multiply(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 108 def multiply(num) self * num end
negate()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 118 def negate -self end
not_equal_to?(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 122 def not_equal_to?(num) self != num end
one?()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 126 def one? to_d == 1.0.to_d end
ordinal()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 130 def ordinal return 'th' if (11..13).cover?(abs % 100) case abs % 10 when 1 then 'st' when 2 then 'nd' when 3 then 'rd' else 'th' end end
ordinalize()
click to toggle source
# File lib/lite/ruby/numeric.rb, line 141 def ordinalize "#{self}#{ordinal}" end
outside?(start, finish)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 145 def outside?(start, finish) (start > self) || (finish < self) end
pad(options = {})
click to toggle source
# File lib/lite/ruby/numeric.rb, line 149 def pad(options = {}) pad_number = options[:pad_number] || 0 precision = options[:precision] || 3 to_s.rjust(precision, pad_number.to_s) end
pad_precision(options = {})
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
# File lib/lite/ruby/numeric.rb, line 157 def pad_precision(options = {}) pad_number = options[:pad_number] || 0 precision = options[:precision] || 2 separator = options[:separator] || '.' string = to_s string << separator unless string.include?(separator) ljust_count = string.split(separator).first.length ljust_count += (string.count(separator) + precision) if precision.positive? if ljust_count >= string.length string.ljust(ljust_count, pad_number.to_s) else string[0..(ljust_count - 1)] end end
percentage_of(number)
click to toggle source
rubocop:enable Metrics/AbcSize, Metrics/MethodLength
# File lib/lite/ruby/numeric.rb, line 175 def percentage_of(number) return 0 if zero? || number.zero? (self / number.to_f) * 100.0 end
power(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 181 def power(num) self**num end
range(value)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 185 def range(value) (self - value)..(self + value) end
Also aliased as: plus_minus
root(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 189 def root(num) self**(1.0 / num) end
round_down(num = 0)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 193 def round_down(num = 0) int, dec = to_f.to_s.split('.') "#{int}.#{dec[0...num]}".to_f end
subtract(num)
click to toggle source
# File lib/lite/ruby/numeric.rb, line 199 def subtract(num) self - num end
to_currency(options = {})
click to toggle source
# File lib/lite/ruby/numeric.rb, line 203 def to_currency(options = {}) unit = options[:unit] || '$' "#{unit}#{pad_precision(options.only(:precision))}" end
to_nearest_value(values = [])
click to toggle source
# File lib/lite/ruby/numeric.rb, line 209 def to_nearest_value(values = []) return self if values.length.zero? value = values.first difference = (self - value).abs values.each do |val| next unless (self - val).abs < difference difference = (self - val).abs value = val end value end
to_percentage(options = {})
click to toggle source
# File lib/lite/ruby/numeric.rb, line 225 def to_percentage(options = {}) unit = options[:unit] || '%' "#{pad_precision(options.only(:precision))}#{unit}" end
to_range()
click to toggle source
rubocop:disable Lint/AmbiguousRange
# File lib/lite/ruby/numeric.rb, line 232 def to_range negative? ? (self..-self) : (-self..self) end
within?(number, epsilon = 0.01)
click to toggle source
rubocop:enable Lint/AmbiguousRange
# File lib/lite/ruby/numeric.rb, line 237 def within?(number, epsilon = 0.01) return number == self if epsilon.zero? alpha = to_f beta = number.to_f if alpha.zero? || beta.zero? (alpha - beta).abs < epsilon else (alpha / beta - 1).abs < epsilon end end