@dark_spectator

Сокращение больших чисел в Unity3D. Как это сделать?

Есть число типа decimal в C#.
Условно 1 000 000 000 000
Желательно отображать его в виде 1Т (Трилион), при этом желательно, что-бы была возможность и такого отображения:
1 250 000 000 000 = 1.25T

Перерыл уже много статей, но решения так и не нашёл.

Как можно реализовать такое сокращение?

1 000 = 1К || 1 250 = 1.25К
1 000 000 = 1М || 1 250 000 = 1.25M
и т.д.
ВСе что я смог найти, но не очень хорошо работает.

char[] names = { 'K', 'M', 'B', 'T', ...};
    private string __CutDigit(string digit)
    {
        var dotIdx = digit.IndexOf('.');
        if (dotIdx < 0) dotIdx = digit.Length;
        var triples = dotIdx / 3;
        var num = dotIdx % 3;

        return digit.Substring(0, num) + '.' + digit[num] + names[triples];
    }
  • Вопрос задан
  • 2883 просмотра
Решения вопроса 1
WNeZRoS
@WNeZRoS
static string[] names = { "", "K", "M", "B", "T" };
	
static string FormatMoney(decimal digit)
{
	int n = 0;
	while (n + 1 < names.Length && digit >= 100m)
	{
		digit /= 1000m;
		n++;
	}
	return string.Format("{0}{1}", digit, names[n]);
}


Засчёт digit >= 100m могут получиться числа типа 0.11K или 0.25M.
Если дробные числа нужны только больше 1, то сравнение нужно сделать с 1000.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы