我已经将带有 gtest 测试的 c++ 项目移植到带有 nunit 测试的 ac# 项目。现在我遇到了浮点精度的问题。
在 nunit 测试中我一直不好(红色)
Assert.AreEqual(0.7, 7 * 0.1);
在 gtest 测试中,我有:
ASSERT_DOUBLE_EQ(0.7, 7 * 0.1);
没关系(绿色)
现在的问题是 为什么???
原文由 schoetbi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经将带有 gtest 测试的 c++ 项目移植到带有 nunit 测试的 ac# 项目。现在我遇到了浮点精度的问题。
在 nunit 测试中我一直不好(红色)
Assert.AreEqual(0.7, 7 * 0.1);
在 gtest 测试中,我有:
ASSERT_DOUBLE_EQ(0.7, 7 * 0.1);
没关系(绿色)
现在的问题是 为什么???
原文由 schoetbi 发布,翻译遵循 CC BY-SA 4.0 许可协议
Google 测试的 ASSERT_DOUBLE_EQ()
验证实际值在预期值的 4 个 ULP 内(参见 https://github.com/google/googletest/blob/main/docs/advanced.md#floating 的更多信息 点比较)。 Nunit 可能正在执行精确比较。
原文由 VladLosev 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
或者,您可以添加第三个参数,这是两个值之间的最大差异,您可以 在此处 阅读。