Как вывести сокращение больших чисел -- проще? - C#
Формулировка задачи:
У меня есть некий класс принимающий большое число и возвращающий на выходе сокращенный вариант записи этого числа:
То как я это реализовал, мне не нравится, посоветуйте или помогите реализовать ToString() проще. Точнее, если делать как я, то дальше описывая варианты ZZZ, ZZZZ, ZZZZZ и т.д. мой ToString() дорастет до 200+ строк)), а ZZZZZZZZZZZZZZZZZ...
public class ABCInt
{
private readonly BigIntTest valueInt;
static string ABC = "ABCDEFGHIGKLMNOPQRSTUVWXYZ";
//
// --- // ---
//
public override string ToString()
{
List<char> ch = new List<char>(2);
int a0 = valueInt.ToString().Length;
int a1 = (a0 - 1) / 3 - 1;
int a3 = a1 / ABC.Length;
int a2 = a1 - ABC.Length * a3;
if (a1 >= 0 && a3 < 1)
{
ch.Add(ABC[a1]);
}
if (a3 > 0)
{
ch.Add(ABC[a3 - 1]);
ch.Add(ABC[a2]);
}
a1 = a0 % 3;
string st = "";
if (a1 == 0 && a0 < 4)
st = valueInt.ToString();
else
{
if (a1 == 1)
st = string.Format("{0},{1}{2}", valueInt.ToString()[0], valueInt.ToString()[1], valueInt.ToString()[2]);
if (a1 == 2)
st = string.Format("{0}{1},{2}", valueInt.ToString()[0], valueInt.ToString()[1], valueInt.ToString()[2]);
if (a1 == 0)
st = string.Format("{0}{1}{2}", valueInt.ToString()[0], valueInt.ToString()[1], valueInt.ToString()[2]);
}
return string.Format("{0} {1}", st, new string(ch.ToArray()));
}
}Решение задачи: «Как вывести сокращение больших чисел -- проще?»
textual
Листинг программы
else
{
string str = valueInt.ToString();
st = (a1 > 0 && str.Length > a1) ? str.Insert(a1, ",") : str;
}