/// <summary> /// Записывает пропись суммы в заданной валюте в <paramref name="result"/> строчными буквами. /// </summary> public static StringBuilder Пропись(decimal сумма, Валюта валюта, StringBuilder result) { decimal целая = Math.Floor(сумма); uint дробная = (uint)((сумма - целая) * 100); Число.Пропись(целая, валюта.ОсновнаяЕдиница, result); return(ДобавитьКопейки(дробная, валюта, result)); }
/// <summary> /// Записывает пропись суммы в заданной валюте в <paramref name="result"/> строчными буквами. /// </summary> public static StringBuilder Пропись(double сумма, Валюта валюта, StringBuilder result) { double целая = Math.Floor(сумма); // Вынесение 100 за скобки позволяет избежать ошибки округления // например, когда сумма = 1234.51. uint дробная = (uint)(сумма * 100) - (uint)(целая * 100); Число.Пропись(целая, валюта.ОсновнаяЕдиница, result); return(ДобавитьКопейки(дробная, валюта, result)); }
private static StringBuilder ДобавитьКопейки(uint дробная, Валюта валюта, StringBuilder result) { result.Append(' '); // Эта строчка выполняется быстрее, чем следующая за ней закомментированная. result.Append(дробная.ToString("00")); //result.AppendFormat ("{0:00}", дробная); result.Append(' '); result.Append(Число.Согласовать(валюта.ДробнаяЕдиница, дробная)); return(result); }
/// <summary> /// Возвращает пропись заданной суммы. /// </summary> public static string Пропись(decimal n, Валюта валюта, Заглавные заглавные) { return(Число.ApplyCaps(Пропись(n, валюта, new StringBuilder()), заглавные)); }
/// <summary> /// Возвращает пропись заданной суммы строчными буквами. /// </summary> public static string Пропись(double n, Валюта валюта) { return(Число.ApplyCaps(Пропись(n, валюта, new StringBuilder()), Заглавные.Нет)); }