public static string ConvertDecimalsEng(string number) // Допоміжний метод для конвертації дробової частини в запис центів { string Result = "", Digit = "", EngCents = ""; Digit = number.ToString(); EngCents = TensToString.TenToStringEng(Digit); Result += " " + EngCents; return(Result); }
/* * Клас, який містить два методи дописування розрядів до результату * (по одному для англійської та української версії) * з можливістю дописування аналогічних методів для інших мов */ public static string ConvertNumberEng(string Number) { string Result = ""; float FltNumber = float.Parse(Number); bool isResult = false; //прапорець, який вказує, що перегляд числа завершено if (FltNumber > 0) { int Digits = Number.Length; string Group = ""; int Pos = 0; string Whole = ""; int decimalPlace = Number.IndexOf("."); // допоміжні змінні для виділення цілої частини if (decimalPlace > 0) { Whole = Number.Substring(0, decimalPlace); } else { Whole = Number; } switch (Digits) //перебираємо розряди і виконуємо допис слів розрядів { case 1: Result = OnesToString.OneToStringEng(Number); isResult = true; break; case 2: Result = TensToString.TenToStringEng(Number); isResult = true; break; case 3: Pos = (Digits % 3) + 1; if (Whole.Length >= 3 && Number[Whole.Length - 3] == '1') // додатковий блок if-else для правильного запису чисел англійською { Group = " hundred "; } else { Group = " hundreds "; } break; case 4: case 5: case 6: Pos = (Digits % 4) + 1; if (Whole.Length >= 6 && Number[Whole.Length - 6] == '1') // додатковий блок if-else для правильного запису чисел англійською { Group = " thousand "; } else { Group = " thousands "; } break; case 7: case 8: case 9: Pos = (Digits % 7) + 1; if (Whole.Length >= 9 && Number[Whole.Length - 9] == '1') // додатковий блок if-else для правильного запису чисел англійською { Group = " million "; } else { Group = " millions "; } break; case 10: case 11: case 12: Pos = (Digits % 10) + 1; if (Whole.Length >= 12 && Number[Whole.Length - 12] == '1') // додатковий блок if-else для правильного запису чисел англійською { Group = " billion "; } else { Group = " billions "; } break; default: isResult = true; break; } if (!isResult) //для кожного розряду рекурсивно виконуємо допис слова розряду { if (Number.Substring(0, Pos) != "0" && Number.Substring(Pos) != "0") { try { Result = ConvertNumberEng(Number.Substring(0, Pos)) + Group + ConvertNumberEng(Number.Substring(Pos)); } catch { } } else { Result = ConvertNumberEng(Number.Substring(0, Pos)) + ConvertNumberEng(Number.Substring(Pos)); } } if (Result.Trim().Equals(Group.Trim())) { Result = ""; } } return(Result.Trim()); }