Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }