class Float
Public Instance Methods
to_eng(pa=6, unit=nil)
click to toggle source
# File lib/gstring.rb, line 1792 def to_eng(pa=6, unit=nil) pa = pa.to_i pa = (pa<1) ? 1 : (pa>15) ? 15 : pa if self < 0.0 num = -self sgn = "-" else num = self sgn = "" end str = "%.16e" % num str.extract!(1..1) # remove decimal point num = str.parse('e') exp = str.to_i pos = (exp%3)+1 if (exp < 0) esgn = "-" ee = -(exp/3)*3 else esgn = "" ee = (exp/3)*3 end pd = pos > pa ? pos : pa num = (num[0..pa].to_f/10).round.to_s[0..(pa-1)].padto(pd,'0',:right) # round to target size num.insert(pos, '.') unless pos >= (num.length) pfx = String::SI_UNIT_PREFIXES["#{esgn}#{ee}".to_i] unless unit.nil? unless pfx.nil? num += pfx ee=0 # disable 'e' thing end end unit ||= "" if (ee>0) num += "e#{esgn}#{ee}" end return sgn+num+unit end
to_num()
click to toggle source
# File lib/gstring.rb, line 1782 def to_num self end
to_scd(dp=2, delim = ',.')
click to toggle source
# File lib/gstring.rb, line 1785 def to_scd(dp=2, delim = ',.') num = ((10 ** dp) * self).round.to_s man = num[0..(-dp-1)] man = man.empty? ? '0' : man frt = (num[(-dp)..(-1)] || "").padto(dp,'0',:right) return man.reverse.scan(/\d{1,3}/).join(delim.first).reverse + delim.last + frt end