public void RoundToIntNotAtMidPoint(MidpointRoundingMode mode) { const int range = 3; var epsilon = new BigRational(1, 3); for (BigRational rational = -range; rational <= range; ++rational) { AssertEqual(rational, BigRational.RoundToInt(rational + epsilon, mode)); AssertEqual(rational, BigRational.RoundToInt(rational - epsilon, mode)); } }
public void TestRoundToTickNotAtMidPoint(MidpointRoundingMode mode) { const int range = 6; var epsilon = new BigRational(1, 12); var tick = new BigRational(1, 3); var max = range * tick; var min = -range * tick; for (BigRational rational = min; rational <= max; rational += tick) { AssertEqual(rational, BigRational.RoundToTick(rational + epsilon, tick, mode)); AssertEqual(rational, BigRational.RoundToTick(rational - epsilon, tick, mode)); AssertEqual(rational, BigRational.RoundToTick(rational, tick, mode)); } }
public void TestRoundToTickAtMidPoint(string unrounded, string tick, MidpointRoundingMode mode, string expected) { AssertEqual( BigRational.RoundToTick(BigRational.Parse(unrounded), BigRational.Parse(tick), mode), BigRational.Parse(expected)); }
public void RoundToIntAtMidPoint(string rational, MidpointRoundingMode mode, int rounded) { Assert.AreEqual( BigRational.RoundToInt(BigRational.Parse(rational), mode), new BigInteger(rounded)); }