11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/hex_values.rb', line 11
def to_float
negative = false
str = self
if self[0].eql? "-"
negative = true
str = self[1..self.length]
end
number = 0
base, remainder = self.split('.')
get_sum(base.split(//).reverse!) { |element, index| number += element.to_i(16) * (16 ** index) } if base
get_sum(remainder.split(//)) { |element, index| number += element.to_i(16).to_f / (16 ** (index + 1)) } if remainder
number = number * -1 if negative
number
end
|