矢量超出 0.000000001f,因此测试失败。
我脑子里的逻辑是 -1.0f,-1.0f,但是当我编写代码以通过测试时(使用内置的 Vector 方法),答案返回为 -0.999999999f,-0.999999999f,它仍然是'正确'。
顺便说一下,这是 C#(XNA 框架提供的 Vector2 类),因此我尝试向 Vector 的每个 x 和 y 参数添加一个 epsilon 值,但这没有用。
我的看法是,通过对答案进行编码,我正在编写生产代码。例如。它会是一样的。这当然是不对的。
有什么建议吗?
最佳答案
单元测试框架通常为采用精度的 float 提供断言。例如在 Visual Studio 测试中你可以这样写:
Assert.AreEqual(1.0f, 0.9999999999f, 1e-3); // passes
Assert.AreEqual(1.0f, 0.9f, 1e-3); // fails
关于c# - 由于 0.000000001 的不准确性,单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918097/