sch*_*tbi 6 c# c++ floating-point nunit googletest
我已经将带有 gtest 测试的 c++ 项目移植到带有 nunit 测试的 ac# 项目。现在我遇到了浮点精度问题。
在 nunit 测试中我不太好(红色)
Assert.AreEqual(0.7, 7 * 0.1);
Run Code Online (Sandbox Code Playgroud)
在 gtest 测试中,我有:
ASSERT_DOUBLE_EQ(0.7, 7 * 0.1);
Run Code Online (Sandbox Code Playgroud)
没问题(绿色)
现在的问题是为什么???
Google 测试ASSERT_DOUBLE_EQ()验证实际值是否在预期值的 4 个 ULP 范围内(更多信息请参见https://github.com/google/googletest/blob/main/docs/advanced.md#floating-point-comparison)。Nunit 可能正在执行精确比较。
或者,您可以添加第三个参数,它是两个值之间的最大差值,您可以在此处阅读。
public static void AreEqual (
double expected,
double actual,
double delta
)
Run Code Online (Sandbox Code Playgroud)
验证两个指定的双精度数是否相等,或者彼此在指定的精度范围内。如果它们不在彼此指定的精度范围内,则断言失败。
| 归档时间: |
|
| 查看次数: |
11578 次 |
| 最近记录: |