/// <summary> Строковое представление числа. </summary> /// <param name="val"> Значение числа. </param> /// <param name="gender"> Склонение по родам. </param> /// <param name="one"> Строка для обозначение единицы в разряде (например: миллион). </param> /// <param name="two"> Строка для обозначение 2,3,4 в разряде (например: миллиарда). </param> /// <param name="five"> Строка для обозначение 5 и выше в разряде (например: триллионов). </param> /// <returns> Строковое представление. </returns> internal static string Str(long val, NounGender gender, string one, string two, string five) { long num = val % 1000; if (num == 0) { return(string.Empty); } if (num < 0) { throw new ArgumentOutOfRangeException(nameof(val), "Параметр не может быть отрицательным"); } var list = new List <string>(DependentGenderNumerals[gender]); list.AddRange(Numerals20); string[] frac20 = list.ToArray(); var r = new StringBuilder(Hunds[num / 100]); if (num % 100 < 20) { r.Append(frac20[num % 100]); } else { r.Append(Tens[num % 100 / 10]); r.Append(frac20[num % 10]); } r.Append(Case(num, one, two, five)); if (r.Length != 0) { r.Append(" "); } return(r.ToString()); }
public Noun() : base("") { Gender = NounGender.Undefined; }
public Noun(string text, NounGender gender) : base(text) { Gender = gender; }