public static void AppendPadLeftInt(this StringBuilder sb, int pad, int value) { var negative = value < 0; var abs = value; if (negative) { abs = -value; } var chars = ThreadLocalBuffers.chars(); var idx = 31; var size = 0; while (abs > 0 || size == 0) { chars[idx] = (char)((byte)(abs % 10) + (byte)'0'); abs /= 10; idx--; size++; } if (negative) { chars[idx] = '-'; idx--; size++; } var diff = pad - size; if (diff > 0) { sb.Append(' ', diff); } sb.Append(chars, idx + 1, size); }
public static void AppendPadLeftFloat(this StringBuilder sb, int pad, float value, int digits) { var negative = value < 0; var abs = value; if (negative) { abs = -value; } var chars = ThreadLocalBuffers.chars(); var idx = 15; var size = 0; var integer = (int)abs; while (integer > 0 || size == 0) { chars[idx] = (char)((byte)(integer % 10) + (byte)'0'); integer /= 10; idx--; size++; } if (negative) { chars[idx] = '-'; idx--; size++; } if (digits > 0) { size += digits + 1; var idx2 = 16; chars[idx2] = '.'; idx2 += digits; var deci = (int)Math.Round(((abs - Math.Floor(abs)) * Math.Pow(10f, digits))); for (var i = 0; i < digits; i++) { chars[idx2] = (char)((byte)(deci % 10) + (byte)'0'); deci /= 10; idx2--; } } var diff = pad - size; if (diff > 0) { sb.Append(' ', diff); } sb.Append(chars, idx + 1, size); }