【发布时间】:2010-08-16 16:36:14
【问题描述】:
我在工作中进行了一些单元测试,其中一个断言出现了一个特殊的错误。请注意,expectedValue 和 actualValue 都是双精度值。
Assert.AreEqual(expectedValue, actualValue);
异常声明它们不相等,详细说明“预期值: 实际值:。”
预期值是硬编码的 6.8,而实际值是使用通过我们的分类方法(例如 Equal Records 或 Jenks Natural Breaks)的数据库值制定的。
我的猜测是,不同之处可能在于 2 个值的尾数在最低有效位之前是相似的。我更新了测试以包含一个 epsilon 以查找这两个值是否足够接近,但我很好奇是否有办法强制尾数与显示值匹配,如果我显示该双精度。这样的尾数校正是否存在?
【问题讨论】:
-
人们没有正确阅读您的问题,您知道精确度是怎么回事,您只是在询问尾数如何更好地处理问题,对吧?
-
我正在寻求一种可能的方法来重构尾数,以便它的值更接近它所显示的值。有点像 val = double.Parse(val.ToString());除非效率更高。
标签: .net floating-accuracy error-correction