Реализует вывод прописью любого объекта, реализующего Float
Выдает сумму прописью с учетом дробной доли. Дробная доля округляется до миллионной, или (если дробная доля оканчивается на нули) до ближайшей доли ( 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
Generated with the Darkfish Rdoc Generator 2.