Ejemplo n.º 1
0
        /// <summary>
        /// Вернуть строковое представление суммы в валюте, разделенное на части.
        /// [0] - основная чать прописью (рубли)
        /// [1] - единицы представления основной части (рубли)
        /// [2] - дополнительная чать число или прописью (копейки)
        /// [3] - единицы представления дополнительной части (копейки)
        /// </summary>
        /// <param name="val">Значение суммы.</param>
        /// <param name="seniorMale">True - мужской род основной части..</param>
        /// <param name="seniorOne">Строковое предсталение основной части (рубли) валюты для значения 1.</param>
        /// <param name="seniorTwo">Строковое предсталение основной части (рубли) валюты для значений от 2 до 4.</param>
        /// <param name="seniorFive">Строковое предсталение основной части (рубли) валюты для значений  больше 5.</param>
        /// <param name="juniorString">True - строковое представление копеек, false - числовое.</param>
        /// <param name="juniorMale">True - мужской род дополнительной части.</param>
        /// <param name="juniorOne">Строковое предсталение дополнительной (копейки) части валюты для значения 1.</param>
        /// <param name="juniorTwo">Строковое предсталение дополнительной части (копейки) валюты для значений от 2 до 4.</param>
        /// <param name="juniorFive">Строковое предсталение дополнительной части (копейки) валюты для значений  больше 5.</param>
        public static string[] Components(decimal val, bool seniorMale, string seniorOne, string seniorTwo, string seniorFive,
                                          bool juniorString, bool juniorMale, string juniorOne, string juniorTwo, string juniorFive)
        {
            var n         = (long)Math.Abs(val);                       //Основная часть (рубли)
            var remainder = (int)((Math.Abs(val) - n + 0.005m) * 100); //Доп. часть (копейки)

            var seniorStr = RusNumber.Components(n, seniorMale, seniorOne, seniorTwo, seniorFive);

            var juniorStr = juniorString
                ? RusNumber.Components(remainder, juniorMale, juniorOne, juniorTwo, juniorFive)
                : new[] { remainder.ToString("00"), RusNumber.Case(remainder, juniorOne, juniorTwo, juniorFive) };

            juniorStr[0] = juniorStr[0].ToLower();

            var result = new List <string>();

            result.AddRange(seniorStr);
            result.AddRange(juniorStr);
            return(result.ToArray());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Вернуть строковое представление суммы в валюте.
        /// </summary>
        /// <param name="val">Значение суммы.</param>
        /// <param name="seniorMale">True - мужской род основной части..</param>
        /// <param name="seniorOne">Строковое предсталение основной части (рубли) валюты для значения 1.</param>
        /// <param name="seniorTwo">Строковое предсталение основной части (рубли) валюты для значений от 2 до 4.</param>
        /// <param name="seniorFive">Строковое предсталение основной части (рубли) валюты для значений  больше 5.</param>
        /// <param name="juniorString">True - строковое представление копеек, false - числовое.</param>
        /// <param name="juniorMale">True - мужской род дополнительной части.</param>
        /// <param name="juniorOne">Строковое предсталение дополнительной (копейки) части валюты для значения 1.</param>
        /// <param name="juniorTwo">Строковое предсталение дополнительной части (копейки) валюты для значений от 2 до 4.</param>
        /// <param name="juniorFive">Строковое предсталение дополнительной части (копейки) валюты для значений  больше 5.</param>
        public static string Str(decimal val, bool seniorMale, string seniorOne, string seniorTwo, string seniorFive,
                                 bool juniorString, bool juniorMale, string juniorOne, string juniorTwo, string juniorFive)
        {
            var n         = (long)Math.Abs(val);                       //Основная часть (рубли)
            var remainder = (int)((Math.Abs(val) - n + 0.005m) * 100); //Доп. часть (копейки)

            var r = new StringBuilder();

            r.Append(RusNumber.Str(n, seniorMale, seniorOne, seniorTwo, seniorFive));

            if (juniorString)
            {
                r.Append(RusNumber.Str(remainder, juniorMale, juniorOne, juniorTwo, juniorFive).ToLower());
            }
            else
            {
                r.Append(remainder.ToString("00 "));
                r.Append(RusNumber.Case(remainder, juniorOne, juniorTwo, juniorFive));
            }
            return(r.ToString().TrimEnd() + " ");
        }