任何人都可以帮助我理解,因为预期值和实际值在ToString()
方法中有不同的结果。当我为我打开手表时它是相同的值。
由于
代码:
[TestMethod]
public void SerializeDecimalWithTwoDecimals()
{
var expected = decimal.Round(1.00M,2);
var actual = decimal.Round(1M,2);
Assert.AreEqual(expected.ToString(), actual.ToString());
}
答案 0 :(得分:5)
基本上不要相信Watch窗口。它可以用值的字符串表示来玩愚蠢的游戏。这两个值相等(expected == actual
将为真),但它们不相同 - 保留尾随零。
在这里,Round
方法实际上并没有改变这些值,所以你有效地得到了:
var expected = 1.00m;
var actual = 1m;
Assert.AreEqual(expected.ToString(), actual.ToString());
...而1.00m.ToString()
是" 1.00",而1m.ToString()
是" 1"。
答案 1 :(得分:3)
Microsoft C#文档:
缩放因子还会保留十进制数中的任何尾随零。尾随零不会影响算术或比较运算中的十进制数的值。但是,如果应用了适当的格式字符串,则ToString方法可能会显示尾随零link