15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/i2c/alpha_display/extensions.rb', line 15
def to_alpha(len = 4)
v = self.to_f
prefixes = ['', 'k', 'M', 'G', 'T']
pref_index = 0
if v.round.to_s.length > len
while v.abs > 1000
v = v / 1000
pref_index += 1
end
if v < 0 && v.abs >= 100
v = v / 1000
pref_index += 1
end
end
pref = prefixes[pref_index]
digits = len - pref.length
decimals = digits - v.abs.to_i.to_s.length - (v < 0 ? 1 : 0)
return ("%.#{decimals}f" % v) + pref
end
|