Example #1
0
        /// <devdoc>
        ///    <para>
        ///       Initializes a new instance of the <see cref='System.Data.SqlTypes.SqlMoney'/> class with the value given.
        ///    </para>
        /// </devdoc>
        public SqlMoney(Decimal value)
        {
            // Since Decimal is a value type, operate directly on value, don't worry about changing it.
            SqlDecimal snum = new SqlDecimal(value);

            snum.AdjustScale(x_iMoneyScale - snum.Scale, true);
            Debug.Assert(snum.Scale == x_iMoneyScale);

            if (snum.m_data3 != 0 || snum.m_data4 != 0)
            {
                throw new OverflowException(SQLResource.ArithOverflowMessage);
            }

            bool  fPositive = snum.IsPositive;
            ulong ulValue   = (ulong)snum.m_data1 + (((ulong)snum.m_data2) << 32);

            if (fPositive && ulValue > (ulong)(Int64.MaxValue) ||
                !fPositive && ulValue > unchecked ((ulong)(Int64.MinValue)))
            {
                throw new OverflowException(SQLResource.ArithOverflowMessage);
            }

            _value    = fPositive ? (long)ulValue : unchecked (-(long)ulValue);
            _fNotNull = true;
        }
Example #2
0
        public void AdjustScale()
        {
            Assert.Equal(6464.646400m.ToString(), SqlDecimal.AdjustScale(_test1, 2, false).Value.ToString());
            Assert.Equal(6464.65.ToString(), SqlDecimal.AdjustScale(_test1, -2, true).Value.ToString());
            Assert.Equal(6464.64.ToString(), SqlDecimal.AdjustScale(_test1, -2, false).Value.ToString());
            Assert.Equal(10000.000000000000m.ToString(), SqlDecimal.AdjustScale(_test2, 10, false).Value.ToString());
            Assert.Equal("79228162514264337593543950335.00", SqlDecimal.AdjustScale(_test5, 2, false).ToString());

            Assert.Throws <SqlTruncateException>(() => SqlDecimal.AdjustScale(_test1, -5, false));
        }
 public void AdjustScale()
 {
     Assert.AreEqual("6464.646400", SqlDecimal.AdjustScale(Test1, 2, false).Value.ToString(), "#E01");
     Assert.AreEqual("6464.65", SqlDecimal.AdjustScale(Test1, -2, true).Value.ToString(), "#E02");
     Assert.AreEqual("6464.64", SqlDecimal.AdjustScale(Test1, -2, false).Value.ToString(), "#E03");
     Assert.AreEqual("10000.000000000000", SqlDecimal.AdjustScale(Test2, 10, false).Value.ToString(), "#E01");
     Assert.AreEqual("79228162514264337593543950335.00", SqlDecimal.AdjustScale(Test5, 2, false).ToString(), "#E04");
     try {
         SqlDecimal test = SqlDecimal.AdjustScale(Test1, -5, false);
         Assert.Fail("#E05");
     } catch (SqlTruncateException) {
     }
 }
Example #4
0
 public void AdjustScale()
 {
     Assert.Equal(6464.646400m.ToString(), SqlDecimal.AdjustScale(_test1, 2, false).Value.ToString());
     Assert.Equal(6464.65.ToString(), SqlDecimal.AdjustScale(_test1, -2, true).Value.ToString());
     Assert.Equal(6464.64.ToString(), SqlDecimal.AdjustScale(_test1, -2, false).Value.ToString());
     Assert.Equal(10000.000000000000m.ToString(), SqlDecimal.AdjustScale(_test2, 10, false).Value.ToString());
     Assert.Equal("79228162514264337593543950335.00", SqlDecimal.AdjustScale(_test5, 2, false).ToString());
     try
     {
         SqlDecimal test = SqlDecimal.AdjustScale(_test1, -5, false);
         Assert.False(true);
     }
     catch (SqlTruncateException)
     {
     }
 }