Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            VeryLongDouble a = new VeryLongDouble();

            a.FloatPart    = new char[] { '0' };
            a.IntegralPart = new char[] { '1' };
            DividedByTwoXTimes(ref a, 200);
            Console.WriteLine(a);
        }
Ejemplo n.º 2
0
            public VeryLongDouble(VeryLongDouble a)
            {
                IntegralPart = new char[a.IntegralPart.Length];
                FloatPart    = new char[a.FloatPart.Length];

                for (int i = 0; i < a.IntegralPart.Length; i++)
                {
                    IntegralPart[i] = a.IntegralPart[i];
                }

                for (int i = 0; i < a.FloatPart.Length; i++)
                {
                    FloatPart[i] = a.FloatPart[i];
                }
            }
Ejemplo n.º 3
0
        static void DividedByTwoXTimes(ref VeryLongDouble a, int X)
        {
            VeryLongDouble buf = new VeryLongDouble();

            for (int i = 0; i < X; i++)
            {
                buf = new VeryLongDouble(a.IntegralPart.Length, a.FloatPart.Length);

                #region IntegralPartDivision
                for (int j = a.IntegralPart.Length - 1; j >= 0; j--)
                {
                    if (a.IntegralPart[j] == '0')
                    {
                        continue;
                    }

                    if (a.IntegralPart[j] == '1')
                    {
                        if (j != 0)
                        {
                            buf.IntegralPart[j - 1] = '5';
                        }
                        else
                        {
                            buf.FloatPart[0] = '5';
                        }
                    }

                    if (a.IntegralPart[j] == '2')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(1)[0];
                    }

                    if (a.IntegralPart[j] == '3')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(1)[0];
                        if (j != 0)
                        {
                            buf.IntegralPart[j - 1] = '5';
                        }
                        else
                        {
                            buf.FloatPart[0] = '5';
                        }
                    }

                    if (a.IntegralPart[j] == '4')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(2)[0];
                    }
                    ;


                    if (a.IntegralPart[j] == '5')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(2)[0];
                        if (j != 0)
                        {
                            buf.IntegralPart[j - 1] = '5';
                        }
                        else
                        {
                            buf.FloatPart[0] = '5';
                        }
                    }

                    if (a.IntegralPart[j] == '6')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(3)[0];
                    }

                    if (a.IntegralPart[j] == '7')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(3)[0];
                        if (j != 0)
                        {
                            buf.IntegralPart[j - 1] = '5';
                        }
                        else
                        {
                            buf.FloatPart[0] = '5';
                        }
                    }

                    if (a.IntegralPart[j] == '8')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(4)[0];
                    }

                    if (a.IntegralPart[j] == '9')
                    {
                        buf.IntegralPart[j] += char.ConvertFromUtf32(4)[0];
                        if (j != 0)
                        {
                            buf.IntegralPart[j - 1] = '5';
                        }
                        else
                        {
                            buf.FloatPart[0] = '5';
                        }
                    }
                }
                #endregion
                #region FloatPartDivision
                for (int j = 0; j < a.FloatPart.Length; j++)
                {
                    if (a.FloatPart[j] == '0')
                    {
                        continue;
                    }

                    if (a.FloatPart[j] == '1')
                    {
                        buf.FloatPart[j + 1] = '5';
                    }


                    if (a.FloatPart[j] == '2')
                    {
                        buf.FloatPart[j] += char.ConvertFromUtf32(1)[0];
                    }

                    if (a.FloatPart[j] == '3')
                    {
                        buf.FloatPart[j]    += char.ConvertFromUtf32(1)[0];
                        buf.FloatPart[j + 1] = '5';
                    }

                    if (a.FloatPart[j] == '4')
                    {
                        buf.FloatPart[j] += char.ConvertFromUtf32(2)[0];
                    }
                    ;


                    if (a.FloatPart[j] == '5')
                    {
                        buf.FloatPart[j]    += char.ConvertFromUtf32(2)[0];
                        buf.FloatPart[j + 1] = '5';
                    }


                    if (a.FloatPart[j] == '6')
                    {
                        buf.FloatPart[j] += char.ConvertFromUtf32(3)[0];
                    }

                    if (a.FloatPart[j] == '7')
                    {
                        buf.FloatPart[j]    += char.ConvertFromUtf32(3)[0];
                        buf.FloatPart[j + 1] = '5';
                    }

                    if (a.FloatPart[j] == '8')
                    {
                        buf.FloatPart[j] += char.ConvertFromUtf32(4)[0];
                    }

                    if (a.FloatPart[j] == '9')
                    {
                        buf.FloatPart[j]    += char.ConvertFromUtf32(4)[0];
                        buf.FloatPart[j + 1] = '5';
                    }
                }
                #endregion
                a = buf;
                a.CutZeroes();
            }

            a.CutZeroes();
        }