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); }
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())); }