Esempio n. 1
0
			/// <summary>
			/// Возвращает SpellOut числа.
			/// </summary>
			public static string SpellOut(uint number, IMeasureUnit mu, Заглавные заглавные)
			{
				return ApplyCaps(SpellOut(number, mu, new StringBuilder()), заглавные);
			}
Esempio n. 2
0
			/// <summary> </summary>
			public Currency(IMeasureUnit основная, IMeasureUnit floatPart)
			{
				this.main = основная;

				this.floatPart = floatPart;
			}
Esempio n. 3
0
			public static string Normalize(IMeasureUnit measureUnit, uint number)
			{
				uint numberN = number%10;

				uint number10n = (number/10)%10;


				if (number10n == 1) return measureUnit.GenitivePlural;

				switch (numberN)
				{
					case 1:
						return measureUnit.NominativeSingle;

					case 2:
					case 3:
					case 4:
						return measureUnit.GenitiveSingle;

					default:
						return measureUnit.GenitivePlural;
				}
			}
Esempio n. 4
0
			/// <summary>
			/// Возвращает SpellOut числа строчными буквами.
			/// </summary>
			public static string SpellOut(uint number, IMeasureUnit mu)
			{
				return SpellOut(number, mu, Заглавные.Нет);
			}
Esempio n. 5
0
			private static void SpellOutUnit(uint numberLT999, IMeasureUnit unit, MyStringBuilder sb)
			{
				uint numberN = numberLT999%10;

				uint number10n = (numberLT999/10)%10;

				uint number100n = (numberLT999/100)%10;


				sb.Append(Сотни[number100n]);


				if ((numberLT999%100) != 0)
				{
					Tens[number10n].SpellOut(sb, numberN, unit.NumberForm);
				}


				// Добавить название класса в нужной форме.

				sb.Append(Normalize(unit, numberLT999));
			}
Esempio n. 6
0
			/// <summary>
			/// Получить SpellOut числа с согласованной единицей измерения.
			/// </summary>
			/// <returns> <paramref name="result"/> </returns>
			public static StringBuilder SpellOut(uint number, IMeasureUnit mu, StringBuilder result)
			{
				MyStringBuilder mySb = new MyStringBuilder(result);


				if (number == 0)
				{
					mySb.Append("ноль");

					//mySb.Append(mu.РодМнож);
				}

				else
				{
					uint div1000 = number/1000;

					SpellOutСтаршихКлассов(div1000, 0, mySb);

					SpellOutUnit(number - div1000*1000, mu, mySb);
				}


				return result;
			}
Esempio n. 7
0
			public static StringBuilder SpellOut(ulong number, IMeasureUnit mu, StringBuilder result)
			{
				if (number <= uint.MaxValue)
				{
					SpellOut((uint) number, mu, result);
				}

				else
				{
					MyStringBuilder mySb = new MyStringBuilder(result);


					ulong div1000 = number/1000;

					SpellOutСтаршихКлассов(div1000, 0, mySb);

					SpellOutUnit((uint) (number - div1000*1000), mu, mySb);
				}


				return result;
			}
Esempio n. 8
0
			public static StringBuilder SpellOut(double number, IMeasureUnit mu, StringBuilder result)
			{
				string error = CheckNumber(number);

				if (error != null) throw new ArgumentException(error, "number");


				if (number <= uint.MaxValue)
				{
					SpellOut((uint) number, mu, result);
				}

				else if (number <= ulong.MaxValue)
				{
					// SpellOut с ulong выполняется в среднем в 2 раза быстрее.

					SpellOut((ulong) number, mu, result);
				}

				else
				{
					MyStringBuilder mySb = new MyStringBuilder(result);


					double div1000 = Math.Floor(number/1000);

					SpellOutСтаршихКлассов(div1000, 0, mySb);

					SpellOutUnit((uint) (number - div1000*1000), mu, mySb);
				}


				return result;
			}
Esempio n. 9
0
			public static StringBuilder SpellOut(decimal number, IMeasureUnit mu, StringBuilder result)
			{
				string error = CheckNumber(number);

				if (error != null) throw new ArgumentException(error, "number");


				// Целочисленные версии работают в разы быстрее, чем decimal.

				if (number <= uint.MaxValue)
				{
					SpellOut((uint) number, mu, result);
				}

				else if (number <= ulong.MaxValue)
				{
					SpellOut((ulong) number, mu, result);
				}

				else
				{
					var mySb = new MyStringBuilder(result);


					decimal div1000 = Math.Floor(number/1000);

					SpellOutСтаршихКлассов(div1000, 0, mySb);

					SpellOutUnit((uint) (number - div1000*1000), mu, mySb);
				}


				return result;
			}