public static string Divide(string op_1, string op_2, NumericSystems NumSystem)
        {
            string result_ = "";

            var numbers_to_Displace = Formatter.DigitsAfterDotAlignment(op_1, op_2);

            op_1 = Displace(op_1, numbers_to_Displace);
            op_2 = Displace(op_2, numbers_to_Displace);

            int  integer_number_count = 1;
            bool is_first_time = true;
            int  now_int_number, last_int_number = 0, base_displace = 0;


            while (!Formatter.IsZero(op_1) && result_.Length - integer_number_count < 20)
            {
                // if second OP bigger than first
                while (Compare(op_1, op_2) < 0)
                {
                    op_1 = Displace(op_1, 1);
                    base_displace++;
                }


                // create dividing part - number from <second operand>, that can be maximum divided by <first operand>
                string dividing_part = op_2;
                now_int_number = 1 - base_displace;
                while (Compare(Displace(dividing_part, 1), op_1) < 0)
                {
                    dividing_part = Displace(dividing_part, 1);
                    now_int_number++;
                }

                if (is_first_time)
                {
                    integer_number_count = now_int_number;
                    is_first_time        = false;
                }
                else
                {
                    var discharge = last_int_number - now_int_number;
                    for (int i = 0; i < discharge - 1; i++)
                    {
                        result_ += '0';
                    }
                }
                last_int_number = now_int_number;


                // <first operand> minus <dividing part> (toResult) times
                var toResult = 0;

                while (Compare(op_1, dividing_part) >= 0)
                {
                    op_1 = Minus(op_1, dividing_part, NumSystem);
                    toResult++;
                }

                if (toResult >= (int)NumSystem)
                {
                    result_ += Convertor.Convert(NumericSystems.Decimal, NumSystem, toResult.ToString());
                    integer_number_count++;
                }
                else
                {
                    result_ += SymbolOf((byte)toResult);
                }
            }


            // displace result by <integer number count>
            return(Displace(result_, integer_number_count - result_.Length));
        }
 public Calculator(NumericSystems NumericSystem, string operand_1, string operand_2)
 {
     this.NumericSystem = NumericSystem;
     this.operand_1     = Formatter.RemoveExcessZeros(operand_1);
     this.operand_2     = Formatter.RemoveExcessZeros(operand_2);
 }