public void GetDecimalsTest()
		{
			var val = new BigDecimal(10.01m);
			var res = new BigDecimal(0.01m);

			Assert.AreEqual(res, val.GetDecimals(), $"GetDecimals() does not work with value '{val}'.");
		}
		public void EqualsTest2()
		{
			object v1 = new BigDecimal(100.001);
			object v2 = new BigDecimal(100.002);

			Assert.IsFalse(BigDecimal.Equals(v1, v2));
		}
示例#3
0
		public void Negative_Decimal_Same_In_And_Out()
		{
			// arrange
			var expected = -1000000.00013M;

			// act
			var bigDec = new BigDecimal(expected);
			var actual = (decimal)bigDec;

			// assert
			Assert.Equal(expected, actual);
		}
示例#4
0
		public void Negative_ToString()
		{
			// arrange
			var dec = -1000000.00013M;
			var expected = dec.ToString("G");

			// act
			var bigDec = new BigDecimal(dec);
			var actual = bigDec.ToString();

			// assert
			Assert.Equal(expected, actual);
		}
示例#5
0
        public void Run(int iterations)
        {
            if (iterations%2 != 0) iterations++;

            for (int i = 0; i < iterations; _divison += 2, i++)
            {
                _result -= one / _divison;

                i++;
                _divison += 2;

                _result += one / _divison;
            }
        }
示例#6
0
 public void TestCtor()
 {
     BigDecimal d = new BigDecimal();
     d = new BigDecimal(123);
     d = new BigDecimal(123, 12);
     try
     {
         d = new BigDecimal(123, -1);
         Assert.Fail();
     }
     catch (ArgumentOutOfRangeException)
     {
     }
     try
     {
         d = new BigDecimal(123, BigDecimal.MaxScale + 1);
         Assert.Fail();
     }
     catch (ArgumentOutOfRangeException)
     {
     }
 }
示例#7
0
        public static IEnumerable<int> Sqrt(BigDecimal value)
        {
            BigInteger log10 = BigDecimal.Log10Ceiling(value);

            BigDecimal v = BigDecimal.Pow(100, (log10 - 1) / 2);
            value /= v;

            BigInteger p = 0;
            BigInteger c = 0;
            while (true)
            {
                c += (BigInteger)value;
                int X = new Range(9, 0, -1, true)
                    .First(x => (20 * p + x) * x <= c);
                c -= (20 * p + X) * X;
                p *= 10;
                p += X;
                yield return X;
                c *= 100;
                value *= 100;
                value %= 100;
            }
        }
示例#8
0
        public string Run()
        {
            long total = 0;
            for (int i = 1; i <= 100; i++)
            {
                if (Math.Sqrt(i) % 1 == 0)
                    continue;
                BigDecimal xn = new BigDecimal(1, 0);
                BigDecimal xn1 = new BigDecimal(0, 0);
                BigDecimal s = new BigDecimal(i, 0);

                for (int q = 0; q < 11; q++)
                {
                    xn1 = .5 * ((xn) + (s / xn));
                    xn = xn1;
                }
                string points = String.Concat(xn1.ToString().Take(100));
                for (int x = 0; x < points.Length; x++)
                {
                    total += points[x] - '0';
                }
            }
            return total.ToString();
        }
		public void AddTest2()
		{
			var v1 = new BigDecimal(0.01m);
			var v2 = new BigDecimal(0.00001m);

			var res = BigDecimal.Add(v1, v2);

			Assert.AreEqual(new BigDecimal(0.01001m), res);
		}
		public void AddTest4()
		{
			var v1 = new BigDecimal((BigInteger)ulong.MaxValue);
			var v2 = BigDecimal.One;

			var res = BigDecimal.Add(v1, v2);

			var bigInt = new BigInteger(ulong.MaxValue) + 1;

			Assert.AreEqual(new BigDecimal(bigInt), res);
		}
 public void BigDecimal_Test()
 {
     var d = new BigDecimal(new BigInteger(decimal.MaxValue), int.MaxValue);
     var p = BigDecimal.Parse(d.ToString());
 }
示例#12
0
        public void Parsing()
        {
            BigDecimal a = new BigDecimal(123),
                       b = new BigDecimal(123.456),
                       c = new BigDecimal(-123),
                       d = new BigDecimal(-123.456);

            Assert.AreEqual(a, BigDecimal.Parse("123"));
            Assert.AreEqual(a, BigDecimal.Parse("123.0"));
            Assert.AreEqual(a, BigDecimal.Parse("123.00"));
            Assert.AreEqual(a, BigDecimal.Parse("123.000"));
            Assert.AreEqual(a, BigDecimal.Parse("123,0"));
            Assert.AreEqual(a, BigDecimal.Parse("123,00"));
            Assert.AreEqual(a, BigDecimal.Parse("123,000"));

            Assert.AreEqual(b, BigDecimal.Parse("123.456"));
            Assert.AreEqual(b, BigDecimal.Parse("123.4560"));
            Assert.AreEqual(b, BigDecimal.Parse("123.45600"));
            Assert.AreEqual(b, BigDecimal.Parse("123.456000"));
            Assert.AreEqual(b, BigDecimal.Parse("123,456"));
            Assert.AreEqual(b, BigDecimal.Parse("123,4560"));
            Assert.AreEqual(b, BigDecimal.Parse("123,45600"));
            Assert.AreEqual(b, BigDecimal.Parse("123,456000"));

            Assert.AreEqual(a, BigDecimal.Parse("123", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123.0", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123.00", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123.000", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123,0", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123,00", 0));
            Assert.AreEqual(a, BigDecimal.Parse("123,000", 0));

            Assert.AreEqual(b, BigDecimal.Parse("123.456", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123.4560", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123.45600", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123.456000", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123,456", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123,4560", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123,45600", 3));
            Assert.AreEqual(b, BigDecimal.Parse("123,456000", 3));

            Assert.AreEqual(c, BigDecimal.Parse("-123"));
            Assert.AreEqual(c, BigDecimal.Parse("-123.0"));
            Assert.AreEqual(c, BigDecimal.Parse("-123.00"));
            Assert.AreEqual(c, BigDecimal.Parse("-123.000"));
            Assert.AreEqual(c, BigDecimal.Parse("-123,0"));
            Assert.AreEqual(c, BigDecimal.Parse("-123,00"));
            Assert.AreEqual(c, BigDecimal.Parse("-123,000"));

            Assert.AreEqual(d, BigDecimal.Parse("-123.456"));
            Assert.AreEqual(d, BigDecimal.Parse("-123.4560"));
            Assert.AreEqual(d, BigDecimal.Parse("-123.45600"));
            Assert.AreEqual(d, BigDecimal.Parse("-123.456000"));
            Assert.AreEqual(d, BigDecimal.Parse("-123,456"));
            Assert.AreEqual(d, BigDecimal.Parse("-123,4560"));
            Assert.AreEqual(d, BigDecimal.Parse("-123,45600"));
            Assert.AreEqual(d, BigDecimal.Parse("-123,456000"));

            Assert.AreEqual(c, BigDecimal.Parse("-123", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123.0", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123.00", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123.000", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123,0", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123,00", 0));
            Assert.AreEqual(c, BigDecimal.Parse("-123,000", 0));

            Assert.AreEqual(d, BigDecimal.Parse("-123.456", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123.4560", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123.45600", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123.456000", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123,456", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123,4560", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123,45600", 3));
            Assert.AreEqual(d, BigDecimal.Parse("-123,456000", 3));
        }
示例#13
0
        public void insertingSingleValuePrepared(Type tp)
        {
            string cassandraDataTypeName = convertTypeNameToCassandraEquivalent(tp);
            string tableName = "table" + Guid.NewGuid().ToString("N");

            ExecuteSyncNonQuery(Session, string.Format(@"CREATE TABLE {0}(
             tweet_id uuid PRIMARY KEY,
             value {1}
             );", tableName, cassandraDataTypeName));

            List<object[]> toInsert = new List<object[]>(1);
            var val = RandomVal(tp);
            if (tp == typeof (string))
                val = "'" + val.ToString().Replace("'", "''") + "'";

            var row1 = new object[2] { Guid.NewGuid(), val };

            toInsert.Add(row1);

            var prep = PrepareQuery(this.Session, string.Format("INSERT INTO {0}(tweet_id, value) VALUES ({1}, ?);", tableName, toInsert[0][0].ToString()));
            ExecutePreparedQuery(this.Session, prep, new object[1] { toInsert[0][1] });

            #if CASSANDRA_NET_40_OR_GREATER
            if (tp == typeof(Decimal))
                toInsert[0][1] = new BigDecimal((Decimal)toInsert[0][1]);
            #endif
            ExecuteSyncQuery(Session, string.Format("SELECT * FROM {0};", tableName), toInsert);
            ExecuteSyncNonQuery(Session, string.Format("DROP TABLE {0};", tableName));
        }
		public void CompareTest2()
		{
			var v1 = new BigDecimal(1);
			var v2 = new BigDecimal(2);

			Assert.IsTrue(BigDecimal.Compare(v1, v2) < 0);
		}
示例#15
0
		private static ushort SameScale(ref BigDecimal left, ref BigDecimal right) {
			var newScale = Math.Max(left.scale, right.scale);
			left = left.Upscale(newScale);
			right = right.Upscale(newScale);
			return newScale;
		}
示例#16
0
        public void TestEquality()
        {
            BigDecimal a = new BigDecimal(14121976);
            BigDecimal b = new BigDecimal(141219760000, 4);
            Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
            Assert.AreEqual(a, b);

            a = new BigDecimal(14121976, 4);
            b = new BigDecimal(1412.1976m);
            Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
            Assert.AreEqual(a, b);

            a = new BigDecimal(-14121976, 4);
            b = new BigDecimal(-1412.1976m);
            Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
            Assert.AreEqual(a, b);
        }
		public void BigDecimalDecimalTest3()
		{
			var d = -100.01m;
			var tst = new BigDecimal(d);

			Assert.AreEqual(d.ToString(), tst.ToString(), $"BigDecimal(decimal) '{d.ToString()}' does not work.");
		}
		public void OperatorDecimal2()
		{
			var v = new BigDecimal(1.25);
			var d = (decimal)v;

			Assert.IsTrue(d == 1.25m);
		}
		public void BigDecimalDecimalTest5()
		{
			string val = decimal.MinValue.ToString();
			var tst = new BigDecimal(decimal.Parse(val));

			Assert.AreEqual(val, tst.ToString(), $"BigDecimal(decimal) '{val}' does not work.");
		}
		public void OperatorDouble2()
		{
			var v = new BigDecimal(1.25);
			var d = (double)v;

			Assert.IsTrue(d == 1.25);
		}
		public void CompareTest6()
		{
			var v1 = new BigDecimal(-1.001m);
			var v2 = new BigDecimal(-1.01m);

			Assert.IsTrue(BigDecimal.Compare(v1, v2) > 0);
		}
		public void CompareTest3()
		{
			var v1 = new BigDecimal(1.01m);
			var v2 = new BigDecimal(1.01m);

			Assert.IsTrue(BigDecimal.Compare(v1, v2) == 0);
		}
示例#23
0
        public void TestOperations()
        {
            BigDecimal a = new BigDecimal(14121976, 3);
            BigDecimal b = new BigDecimal(19761214, 4);
            // a + 0 = a
            Assert.AreEqual((a + BigDecimal.Zero), a);
            // a - a = 0
            Assert.AreEqual(a - a, BigDecimal.Zero);
            // a + b = b + a
            Assert.AreEqual(a + b, b + a);
            // a * 1 = a
            Assert.AreEqual(a * BigDecimal.One, a);
            // a * b = b * a
            Assert.AreEqual(a * b, b * a);
            // a * 0 = 0
            Assert.AreEqual(a * BigDecimal.Zero, BigDecimal.Zero);
            // -(-a) = a
            Assert.AreEqual(-(-a), a);
            // a + a = a * 2
            Assert.AreEqual(a + a, a * new BigDecimal(2));

            BigDecimal r = a - b;
            Assert.AreEqual(r, new BigDecimal(121458546, 4));
            Assert.IsTrue((a - b) > BigDecimal.Zero);
            Assert.IsTrue((b - a) < BigDecimal.Zero);
        }
		public void NegateTest()
		{
			var v1= new BigDecimal(1.01m);
			var v2 = new BigDecimal(-1.01m);

			Assert.AreEqual(v2, BigDecimal.Negate(v1));
		}
		public void BigDecimalDoubleTest3()
		{
			var d = 1.25;
			var tst = new BigDecimal(d);

			Assert.AreEqual(d.ToString(), tst.ToString(), $"BigDecimal(double) '{d.ToString()}' does not work.");
		}
		public void SubtractTest2()
		{
			var v1 = new BigDecimal(0.01m);
			var v2 = new BigDecimal(0.00001m);

			var res = BigDecimal.Subtract(v1, v2);

			Assert.AreEqual(new BigDecimal(0.00999m), res);
		}
示例#27
0
        public void CompareTo()
        {
            BigInteger hugeInteger = BigInteger.Pow(long.MaxValue, 10);
            BigDecimal hugeNegative = new BigDecimal(-hugeInteger, hugeInteger);
            BigDecimal veryLargeNegative = new BigDecimal(long.MinValue, long.MaxValue);
            BigDecimal largeNegative = new BigDecimal(long.MinValue, int.MaxValue);
            BigDecimal mediumNegative = new BigDecimal(long.MinValue);
            BigDecimal mediumNegativePlusOne = new BigDecimal(long.MinValue + 1);
            BigDecimal zero = BigDecimal.Zero;
            BigDecimal nine = new BigDecimal(9);
            BigDecimal ten = new BigDecimal(10);
            BigDecimal tenPointOne = new BigDecimal(101, -1);
            BigDecimal eleven = new BigDecimal(11);
            BigDecimal nineteen = new BigDecimal(19);
            BigDecimal nineteenPointFive = new BigDecimal(195, -1);
            BigDecimal twenty = new BigDecimal(20);
            BigDecimal twentyFive = new BigDecimal(25);
            BigDecimal thirty = new BigDecimal(30);
            BigDecimal mediumNegativeMinusOne = new BigDecimal(long.MaxValue - 1);
            BigDecimal mediumPositive = new BigDecimal(long.MaxValue);
            BigDecimal largePositive = new BigDecimal(long.MaxValue, int.MaxValue);
            BigDecimal veryLargePositive = new BigDecimal(long.MaxValue, long.MaxValue);
            BigDecimal hugePositive = new BigDecimal(hugeInteger, hugeInteger);

            var expected = new[]
            {
                hugeNegative,
                veryLargeNegative,
                largeNegative,
                mediumNegative,
                mediumNegativePlusOne,
                zero,
                nine,
                ten,
                tenPointOne,
                eleven,
                nineteen,
                nineteenPointFive,
                twenty,
                twentyFive,
                thirty,
                mediumNegativeMinusOne,
                mediumPositive,
                largePositive,
                veryLargePositive,
                hugePositive
            };

            for (int i = 0; i < expected.Length; i++)
            {
                BigDecimal alpha = expected[i];
                Assert.AreEqual(alpha, alpha);
                Assert.AreEqual(0, alpha.CompareTo(alpha));
                for (int j = i + 1; j < expected.Length; j++)
                {
                    BigDecimal bravo = expected[j];
                    Assert.AreEqual(-1, alpha.CompareTo(bravo));
                    Assert.AreEqual(1, bravo.CompareTo(alpha));
                }
            }

            Assert.IsTrue(expected.Shuffle().OrderBy(x => x).SequenceEqual(expected));
        }
		public void CompareToTest()
		{
			var v1 = new BigDecimal(100.001m);
			var v2 = new BigDecimal(100.001m);

			Assert.IsTrue(v1.CompareTo(v2) == 0);
		}
		public void Equals2Test2()
		{
			var v1 = new BigDecimal(100.001);
			var v2 = new BigDecimal(100.002);

			Assert.IsFalse(v1.Equals(v2));
		}
		public void AbsTest3()
		{
			var v1 = new BigDecimal(1.01m);
			var v2 = new BigDecimal(1.01m);

			Assert.AreEqual(v2, BigDecimal.Abs(v1));
		}