由于0.000000001f不准确导致单元测试失败

Fin*_*las 4 c# unit-testing

向量超出0.000000001f,因此测试失败.

我的头脑中的逻辑是-1.0f,-1.0f但是当我编写代码来通过测试时(使用内置的Vector方法),答案又回来了-0.999999999f,-0.999999999f仍然是'正确的' .

顺便说一下,这是C#(由XNA框架提供的Vector2类),所以我尝试将epsilon值添加到Vector的x和y参数中,但这不起作用.

我看待它的方式是通过编写答案,我正在编写生产代码.例如它会是一样的.当然这不是正确的.

有什么建议?

Dar*_*rov 6

单元测试框架通常为需要精确的浮动提供断言.例如,在Visual Studio Test中,您可以编写:

Assert.AreEqual(1.0f, 0.9999999999f, 1e-3); // passes
Assert.AreEqual(1.0f, 0.9f, 1e-3); // fails
Run Code Online (Sandbox Code Playgroud)