class ReadXls::Evaluator::RkNumber
Attributes
builder[RW]
rk_bits[RW]
xf_index[RW]
Public Class Methods
new(builder, rk_bits, xf_index)
click to toggle source
# File lib/read_xls/evaluator/rk_number.rb, line 6 def initialize(builder, rk_bits, xf_index) self.builder = builder self.rk_bits = rk_bits self.xf_index = xf_index end
Public Instance Methods
evaluate()
click to toggle source
# File lib/read_xls/evaluator/rk_number.rb, line 12 def evaluate value = if (rk_bits & 0x02) == 0 rk_bits_without_last_2 = (rk_bits & 0xfffffffc) float_in_64_bit_string_big_endian = (("%032b" % rk_bits_without_last_2) + "0"*32) [float_in_64_bit_string_big_endian].pack("B*").unpack("G").first else rk_bits >> 2 end value = if (rk_bits & 0x01) == 0 value else value / 100.0 end FormatNumber.new(value, extended_format).evaluate end
Private Instance Methods
extended_format()
click to toggle source
# File lib/read_xls/evaluator/rk_number.rb, line 33 def extended_format builder.extended_formats[xf_index] end