我在工作中进行了一些单位测试,并出现了其中一个主张的特殊错误。请注意,预期值和实际价值都是双打。

Assert.AreEqual(expectedValue, actualValue);

例外表明它们不等,阐述了“期望值:<6.8>实际值:<6.8>”。

预期值是硬编码的6.8,实际值是使用通过我们的分类方法(例如平等记录或Jenks自然中断)的数据库值来制定的。

我的猜测是,差异可能是,直到最小的位,这两个值的mantissas都相似。我更新了测试以包括一个epsilon,以查找两个值是否足够接近,但是我很好奇是否有办法强制曼蒂萨(Mantissa)与如果我显示该倍率的显示值匹配的显示值。这样的Mantissa校正是否存在?

有帮助吗?

解决方案

我不完全确定您的意思是强迫曼蒂萨匹配显示值... 没有双重值,例如,完全是0.1。

如果您想显示一些代码 精确的 但是,双重的价值,我有一个 doubleconverter.cs 使它变得容易的文件:

 double d = 0.1;
 string x = DoubleConverter.ToExactString(d);

另一个替代方法是在将双重转换为字符串时使用往返格式指定器(“ R”) - 保证结果具有足够的信息来以稍后再现相同的确切值。换句话说,如果 x != y, , 然后 x.ToString("r") != y.ToString("r").

其他提示

您可以将两者转换为字符串: actualValue.ToString("0.000") 并比较这些弦。

这可以与您的要求密切匹配。

如果要测试默认显示值是否匹配是否匹配,只需比较默认显示值:

Assert.AreEqual(expectedValue.ToString(), actualValue.ToString());
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top