Есть ли простой способ преобразовать число в формат индийских слов с помощью lakhs и крор? - PullRequest
3 голосов
/ 24 марта 2010

Как видно из названия, я хотел бы преобразовать длинное число в формат со словами, используя C #. Настройки Культуры, кажется, не делают этого, и я только сейчас делаю это

String.Format(new CultureInfo("en-IN"), "{0:C0}", Price)

Но для очень длинных чисел я бы предпочел формат слова. Я не из Индии и лишь смутно знаю, как работает система.

Ответы [ 3 ]

4 голосов
/ 08 января 2014
public static string NumberToWords(int number)
    {
        if (number == 0) { return "zero"; }
        if (number < 0) { return "minus " + NumberToWords(Math.Abs(number)); }
        string words = "";
        if ((number / 10000000) > 0) { words += NumberToWords(number / 10000000) + " Crore "; number %= 10000000; }
        if ((number / 100000) > 0) { words += NumberToWords(number / 100000) + " Lakh "; number %= 100000; }
        if ((number / 1000) > 0) { words += NumberToWords(number / 1000) + " Thousand "; number %= 1000; }
        if ((number / 100) > 0) { words += NumberToWords(number / 100) + " Hundred "; number %= 100; }
        if (number > 0)
        {
            if (words != "") { words += "and "; }
            var unitsMap = new[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
            var tensMap = new[] { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "seventy", "Eighty", "Ninety" };
            if (number < 20) { words += unitsMap[number]; }
            else { words += tensMap[number / 10]; if ((number % 10) > 0) { words += "-" + unitsMap[number % 10]; } }
        }
        return words;
    }
2 голосов
/ 28 апреля 2010
  • 1 - Один
  • 10 - Десять
  • 1000 - тысяча
  • 10 000 - Десять тысяч
  • 1 000 000 - Лак
  • 10,00,000 - Тен Лах
  • 1,00,00,000 - крор
  • 10,00,00,000 - Тен Крор

.. после этого араб, хараб, нил и т. Д. НЕ используются в обычном режиме. Фактически, даже финансовые учреждения следуют этому:

  • 100,00,00,000 - Сто крор
  • 1,000,00,00,000 - одна тысяча крор
  • 10 000,00,00 000 - Десять тысяч крор
  • 1,00,000,00,00,000 - Один лак крор (триллион)
  • 99,00 000,00,00 000 - Девяносто девять лак крор (триллион)

Как только это число будет превышено, они удобно переключатся на миллионы / миллиарды / триллионы / квадриллионы ..

1 голос
/ 24 марта 2010

Хотя я не могу дать вам сам код, вот система

  • 1 - Один
  • 10 - десять
  • 1000 - тысяча
  • 10000 - Десять тысяч
  • 100000 - Лах
  • 1000000 - десять лакхов
  • 10000000 - крор
  • 100000000 - Тен крор
  • 1000000000 - арабский
  • 10000000000 - десять арабских
  • 100000000000 - Хараб
  • 1000000000000 - Тен хараб
  • 10000000000000 - 1 Neel
  • 100000000000000 - 10 Neel
  • 1000000000000000 - 1 падм

Я написал подпрограммы для бухгалтерского пакета, который я сделал, поэтому написать его не особенно сложно.

...