/// <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; }
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) { } }
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) { } }