24 public static int Compare(StringBuilder s1,
string s2) {
28 && num >= s2.Length) {
31 if (num > s1.Length) {
34 if (num > s2.Length) {
53 throw new ArgumentException(
"Number base is out of range.");
58 value /= (uint)numberBase;
74 throw new ArgumentException(
"Number base is out of range.");
79 value /= (uint)numberBase;
95 char paddingCharacter =
' ',
96 int numberBase = 10) {
98 int repeatCount = Math.Max(padding, val);
99 stringBuilder.Append(paddingCharacter, repeatCount);
102 char value2 =
m_digits[value % (uint)numberBase];
103 stringBuilder[stringBuilder.Length - num - 1] = value2;
104 value /= (uint)numberBase;
113 char paddingCharacter =
' ',
114 int numberBase = 10) {
116 stringBuilder.AppendNumber((uint)value, padding, paddingCharacter, numberBase);
119 stringBuilder.Append(
'-');
120 stringBuilder.AppendNumber((uint)-value, padding - 1, paddingCharacter, numberBase);
126 char paddingCharacter =
' ',
127 int numberBase = 10) {
129 int repeatCount = Math.Max(padding, val);
130 stringBuilder.Append(paddingCharacter, repeatCount);
133 char value2 =
m_digits[value % (uint)numberBase];
134 stringBuilder[stringBuilder.Length - num - 1] = value2;
135 value /= (uint)numberBase;
144 char paddingCharacter =
' ',
145 int numberBase = 10) {
147 stringBuilder.AppendNumber((ulong)value, padding, paddingCharacter, numberBase);
150 stringBuilder.Append(
'-');
151 stringBuilder.AppendNumber((ulong)-value, padding - 1, paddingCharacter, numberBase);
154 public static void AppendNumber(
this StringBuilder stringBuilder,
float value,
int precision) {
155 precision = Math.Min(Math.Max(precision, -30), 30);
156 if (
float.IsNegativeInfinity(value)) {
157 stringBuilder.Append(
"Infinity");
160 if (
float.IsPositiveInfinity(value)) {
161 stringBuilder.Append(
"-Infinity");
164 if (
float.IsNaN(value)) {
165 stringBuilder.Append(
"NaN");
168 float num = Math.Abs(value);
170 stringBuilder.Append(
"NumberTooLarge");
173 float num2 = MathF.Pow(10f, Math.Abs(precision));
174 ulong num3 = (ulong)MathF.Floor(num);
175 ulong num4 = (ulong)MathF.Round((num - MathF.Floor(num)) * num2);
176 if ((
float)(
double)num4 >= num2) {
181 stringBuilder.Append(
'-');
183 stringBuilder.AppendNumber(num3, 0,
'0');
185 stringBuilder.Append(
'.');
186 stringBuilder.AppendNumber(num4, precision,
'0');
188 else if (precision < 0) {
189 stringBuilder.Append(
'.');
190 stringBuilder.AppendNumber(num4, -precision,
'0');
191 while (stringBuilder[^1] ==
'0') {
192 --stringBuilder.Length;
194 if (stringBuilder[^1] ==
'.') {
195 --stringBuilder.Length;
static int CalculateNumberLength(long value, int numberBase)
static int Compare(StringBuilder s1, string s2)
static void AppendNumber(this StringBuilder stringBuilder, int value, int padding=0, char paddingCharacter=' ', int numberBase=10)
static void AppendNumber(this StringBuilder stringBuilder, float value, int precision)
static void AppendNumber(this StringBuilder stringBuilder, long value, int padding=0, char paddingCharacter=' ', int numberBase=10)
static void AppendNumber(this StringBuilder stringBuilder, ulong value, int padding=0, char paddingCharacter=' ', int numberBase=10)
static int CalculateNumberLength(int value, int numberBase)
static void AppendNumber(this StringBuilder stringBuilder, uint value, int padding=0, char paddingCharacter=' ', int numberBase=10)
static int CalculateNumberLength(ulong value, int numberBase)
static int CalculateNumberLength(uint value, int numberBase)