예제 #1
0
        private static BigPointNumber Division(BigPointNumber A, BigPointNumber B)
        {
            BigPointNumber a = A;
            BigPointNumber b = B;

            RemoveFractionalParts(ref a, ref b);

            string         wholePart      = Div(a, b).ToString();
            BigPointNumber defractionPart = Mod(a, b);

            StringBuilder resStr = new StringBuilder(wholePart);

            if (defractionPart.digits.Count == 1 && defractionPart.digits[0] == 0)
            {
                return(new BigPointNumber(resStr.ToString()));
            }

            BigPointNumber defractionPart_tmp = defractionPart;
            int            i = 0;

            while (defractionPart_tmp.ToString() != "0" && i < 20)
            {
                i++;
                defractionPart_tmp = defractionPart_tmp * new BigPointNumber("10");
                BigPointNumber wholePart_tmp = Div(defractionPart_tmp, b);
                //if (wholePart_tmp.ToString() != "0")
                resStr.Append(wholePart_tmp.ToString());
                defractionPart_tmp = Mod(defractionPart_tmp, b);
            }


            BigPointNumber result = new BigPointNumber(resStr.ToString().Substring(0, wholePart.Length) + "," + resStr.ToString().Substring(wholePart.Length, resStr.ToString().Length - wholePart.Length));

            return(result);
        }
예제 #2
0
        private static BigPointNumber Div(BigPointNumber A, BigPointNumber B)
        {
            BigPointNumber a = A;
            BigPointNumber b = B;

            RemoveFractionalParts(ref a, ref b);

            BigNumber a_ = new BigNumber(a.ToString());
            BigNumber b_ = new BigNumber(b.ToString());

            return(new BigPointNumber(BigNumber.Div(a_, b_).ToString()));
        }