RuTils::Pluralization::FloatFormatting

Реализует вывод прописью любого объекта, реализующего Float

Public Instance Methods

propisju(gender = 2) click to toggle source

Выдает сумму прописью с учетом дробной доли. Дробная доля округляется до миллионной, или (если дробная доля оканчивается на нули) до ближайшей доли ( 500 тысячных округляется до 5 десятых). Дополнительный аргумент - род существительного (1 - мужской, 2- женский, 3-средний)

# File lib/pluralizer/pluralizer.rb, line 169
def propisju(gender = 2)
  raise "Это не число!" if self.nan?
    
  st = RuTils::Pluralization::sum_string(self.to_i, gender, "целая", "целых", "целых")
  
  remainder = self.to_s.match(/\.(\d+)/)[1]
    
  signs = remainder.to_s.size- 1
  
  it = [["десятая", "десятых"]]
  it << ["сотая", "сотых"]
  it << ["тысячная", "тысячных"]
  it << ["десятитысячная", "десятитысячных"]
  it << ["стотысячная", "стотысячных"]
  it << ["миллионная", "милллионных"]
  it << ["десятимиллионная", "десятимилллионных", "десятимиллионных"]
  it << ["стомиллионная", "стомилллионных", "стомиллионных"]
  it << ["миллиардная", "миллиардных", "миллиардных"]
  it << ["десятимиллиардная", "десятимиллиардных", "десятимиллиардных"]
  it << ["стомиллиардная", "стомиллиардных", "стомиллиардных"]
  it << ["триллионная", "триллионных", "триллионных"]

  while it[signs].nil?
    remainder = (remainder/10).round
    signs = remainder.to_s.size- 1
  end

  suf1, suf2, suf3 = it[signs][0], it[signs][1], it[signs][2]
  st + " " + RuTils::Pluralization::sum_string(remainder.to_i, 2, suf1, suf2, suf2)
end
propisju_items(gender=1, *forms) click to toggle source
# File lib/pluralizer/pluralizer.rb, line 200
def propisju_items(gender=1, *forms)
  if self == self.to_i
    return self.to_i.propisju_items(gender, *forms)
  else
    self.propisju(gender) + " " + forms[1]
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.