【发布时间】:2014-09-22 04:41:51
【问题描述】:
我有带有几何实体的复杂测试用例。通过在视口中查看生成的几何图形,我很容易直观地验证测试用例是否通过。
当我对测试通过感到满意时,我会对几何图形进行哈希处理。
var hashCode = GetHashCodeForRegionResult(region);
hashCode.Should().Be(1243932659);
计算涉及对浮点数进行哈希处理。通常这是一件坏的事情。但是,如果我将 same 数据输入到算法中,那么我会期望在位级别上得到完全相同的结果。这种期望是否有效,特别是如果我在不同 CPU、AMD 与 INTEL、64 位与 32 位的 .Net 4.5.1 运行时 中运行相同的测试?
【问题讨论】:
-
我认为这个问题可以简化为:相同的 C# 或 IL 是否总是会产生完全相同的浮点结果(给定相同的输入)?我认为我们不需要在这里考虑散列。好问题。
-
你是对的,感谢您的澄清。
-
我不知道您的问题的答案,但请注意,有正零和负零。对实现的无害更改可能会导致获得其中之一。他们有不同的表示。除此之外,我认为答案是“是”;也许如果你在找到浮点数的散列之前添加零,你会得到想要的结果。
标签: c# .net testing hash floating-point