谁能帮我理解一下,因为在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方法可能会显示尾随的零链接