Ejemplo n.º 1
0
        private static string FormatDecimal(LexoDecimal dec)
        {
            var formatVal    = dec.Format();
            var val          = new StringBuilder(formatVal);
            var partialIndex = formatVal.IndexOf(NumeralSystem.GetRadixPointChar());
            var zero         = NumeralSystem.ToChar(0);

            if (partialIndex < 0)
            {
                partialIndex = formatVal.Length;
                val.Append(NumeralSystem.GetRadixPointChar());
            }

            while (partialIndex < 6)
            {
                val.Insert(0, zero);
                ++partialIndex;
            }

            while (val[val.Length - 1] == zero)
            {
                val.Length = val.Length - 1;
            }

            return(val.ToString());
        }
Ejemplo n.º 2
0
        public static LexoDecimal Parse(string str, ILexoNumeralSystem system)
        {
            var partialIndex = str.IndexOf(system.GetRadixPointChar());

            if (str.LastIndexOf(system.GetRadixPointChar()) != partialIndex)
            {
                throw new FormatException("More than one " + system.GetRadixPointChar());
            }

            if (partialIndex < 0)
            {
                return(Make(LexoInteger.Parse(str, system), 0));
            }

            var intStr = str.Substring(0, partialIndex) + str.Substring(partialIndex + 1);

            return(Make(LexoInteger.Parse(intStr, system), str.Length - 1 - partialIndex));
        }