Class: Floatboat::Converter

Inherits:
Object
  • Object
show all
Defined in:
lib/floatboat/converter.rb

Class Method Summary collapse

Class Method Details

.binary_mantissa_to_decimal(binary_mantissa) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/floatboat/converter.rb', line 12

def self.binary_mantissa_to_decimal(binary_mantissa)
  explicit_mantissa = "1.#{binary_mantissa}"
  int, fraction = explicit_mantissa.split(".")
  minus = int.delete!("-")
  dec = (minus ? "-" : "") + int.to_i(2).to_s

  if fraction
    dec << (fraction.to_i(2) / 2.0**(fraction.size)).to_s[1..-1]
  else
    dec << ".0"
  end
end

.from_bits(bitstring) ⇒ Object



8
9
10
# File 'lib/floatboat/converter.rb', line 8

def self.from_bits(bitstring)
  [bitstring].pack('B*').unpack('G').first
end

.to_bits(float) ⇒ Object



3
4
5
6
# File 'lib/floatboat/converter.rb', line 3

def self.to_bits(float)
  float_as_bytes = [float].pack('G').bytes
  float_as_bytes.map { |n| "%08b" % n }.join
end