public void DivideAndRemainder1() { String a = "3736186567876876578956958765675671119238118911893939591735"; int aScale = 45; String b = "134432345432345748766876876723342238476237823787879183470"; int bScale = 70; String res = "277923185514690367474770683"; int resScale = 0; String rem = "1.3032693871288309587558885943391070087960319452465789990E-15"; int remScale = 70; BigDecimal aNumber = new BigDecimal(BigInteger.Parse(a), aScale); BigDecimal bNumber = new BigDecimal(BigInteger.Parse(b), bScale); BigDecimal remainder; BigDecimal quotient = aNumber.DivideAndRemainder(bNumber, out remainder); Assert.AreEqual(res, quotient.ToString(), "incorrect quotient value"); Assert.AreEqual(resScale, quotient.Scale, "incorrect quotient scale"); Assert.AreEqual(rem, remainder.ToString(), "incorrect remainder value"); Assert.AreEqual(remScale, remainder.Scale, "incorrect remainder scale"); }
public void DivideAndRemainder2() { String a = "3736186567876876578956958765675671119238118911893939591735"; int aScale = -45; String b = "134432345432345748766876876723342238476237823787879183470"; int bScale = 70; String res = "2779231855146903674747706830969461168692256919247547952" + "2608549363170374005512836303475980101168105698072946555" + "6862849"; int resScale = 0; String rem = "3.4935796954060524114470681810486417234751682675102093970E-15"; int remScale = 70; BigDecimal aNumber = new BigDecimal(BigInteger.Parse(a), aScale); BigDecimal bNumber = new BigDecimal(BigInteger.Parse(b), bScale); BigDecimal remainder; BigDecimal quotient = aNumber.DivideAndRemainder(bNumber, out remainder); Assert.AreEqual(res, quotient.ToString(), "incorrect quotient value"); Assert.AreEqual(resScale, quotient.Scale, "incorrect quotient scale"); Assert.AreEqual(rem, remainder.ToString(), "incorrect remainder value"); Assert.AreEqual(remScale, remainder.Scale, "incorrect remainder scale"); }
public void DivideAndRemainderMathContextDown() { String a = "3736186567876876578956958765675671119238118911893939591735"; int aScale = 45; String b = "134432345432345748766876876723342238476237823787879183470"; int bScale = 20; int precision = 15; RoundingMode rm = RoundingMode.Down; MathContext mc = new MathContext(precision, rm); String res = "0E-25"; int resScale = 25; String rem = "3736186567876.876578956958765675671119238118911893939591735"; int remScale = 45; BigDecimal aNumber = new BigDecimal(BigInteger.Parse(a), aScale); BigDecimal bNumber = new BigDecimal(BigInteger.Parse(b), bScale); BigDecimal remainder; BigDecimal quotient = aNumber.DivideAndRemainder(bNumber, mc, out remainder); Assert.AreEqual(res, quotient.ToString(), "incorrect quotient value"); Assert.AreEqual(resScale, quotient.Scale, "incorrect quotient scale"); Assert.AreEqual(rem, remainder.ToString(), "incorrect remainder value"); Assert.AreEqual(remScale, remainder.Scale, "incorrect remainder scale"); }