Как вывести сокращение больших чисел -- проще? - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д