Подтвердить что ты не робот

Строковые номера формата: тысячи 123K, миллионы 123M, миллиарды 123B

Есть ли способ использования форматирования строк для форматирования Thousands, Millions, Billions до 123K, 123M, 123B без необходимости менять код для деления значения на Thousand, Million или Billion?

String.Format("{0:????}", LargeNumber)
4b9b3361

Ответ 1

Существуют разные способы достижения этого, но для меня проще всего и быстрее использовать "," custom specifier

double value = 1234567890;

// Displays 1,234,567,890   
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));

// Displays 1,234,568K
Console.WriteLine(value.ToString("#,##0,K", CultureInfo.InvariantCulture));

// Displays 1,235M
Console.WriteLine(value.ToString("#,##0,,M", CultureInfo.InvariantCulture));

// Displays 1B
Console.WriteLine(value.ToString("#,##0,,,B", CultureInfo.InvariantCulture));

Ответ 2

Я использую это сочетание форматов в методе расширения (просто добавьте его в свой проект и наслаждайтесь) 😎

public static string ToKMB(this decimal num)
{
    if (num > 999999999)
    {
        return num.ToString("0,,,.###B", CultureInfo.InvariantCulture);
    }
    else
    if (num > 999999)
    {
        return num.ToString("0,,.##M", CultureInfo.InvariantCulture);
    }
    else
    if (num > 999)
    {
        return num.ToString("0,.#K", CultureInfo.InvariantCulture);
    }
    else
    {
        return num.ToString(CultureInfo.InvariantCulture);
    }
}

Применение:

((decimal)235).ToKMB();
// 235

((decimal)1235).ToKMB();
// 1.2K

((decimal)6271235).ToKMB();
// 6.27M

((decimal)93246571235).ToKMB();
// 93.247B

Примечания:

  • Он возвращает больше деталей для больших чисел, и мне это нравится.

  • Я пишу метод для чисел decimal в этом примере, вы можете написать некоторые методы переопределения для поддержки int, long и double, чтобы использовать его без кастингов, таких как:

    myIntNumber.ToKMB();

    myLongNumber.ToKMB();

    myDoubleNumber.ToKMB();

    myDecimalNumber.ToKMB();

Ответ 3

Вы можете реализовать ICustomFormatter, который делит значение на тысячи, миллион или миллиард и использует его следующим образом:

var result = string.Format(new MyCustomFormatter(), "{0:MyFormat}", number);