断言两位小数时出错

Xem*_*adk 0 c# assert decimal

任何人都可以帮助我理解,因为预期值和实际值在ToString()方法中有不同的结果.当我为我打开手表时它是相同的值.

谢谢

码:

    [TestMethod]
    public void SerializeDecimalWithTwoDecimals()
    {
        var expected = decimal.Round(1.00M,2);
        var actual = decimal.Round(1M,2);

        Assert.AreEqual(expected.ToString(), actual.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

基本上不要相信Watch窗口.它可以用值的字符串表示来玩愚蠢的游戏.这两个值相等(expected == actual将为真),但它们不相同 - 保留尾随零.

这里,该Round方法实际上并没有实际改变值,所以你有效地得到了:

var expected = 1.00m;
var actual = 1m;

Assert.AreEqual(expected.ToString(), actual.ToString());
Run Code Online (Sandbox Code Playgroud)

......并且1.00m.ToString()是"1.00",而是1m.ToString()"1".