断言两个小数错误

本文关键字:两个 小数 错误 断言 | 更新日期: 2023-09-27 18:16:53

谁能帮我理解一下,因为在ToString()方法中期望值和实际值有不同的结果。当我为我打开手表时,它的值是相同的。

感谢

代码:

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

断言两个小数错误

基本上不相信观察窗口。它可以用字符串表示值来玩一些愚蠢的游戏。这两个值是相等的(expected == actual将为真),但它们不相同——后面的零被保留。

在这里,Round方法实际上根本没有改变值,所以你有效地得到:

var expected = 1.00m;
var actual = 1m;
Assert.AreEqual(expected.ToString(), actual.ToString());

1.00m.ToString()为"1.00",1m.ToString()为"1"。

Microsoft c#文档:

比例因子还保留十进制数中任何尾随的零。在算术或比较运算中,末尾的零不会影响十进制数的值。但是,如果应用了适当的格式字符串,ToString方法可能会显示尾随的零链接