我已经将带有 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 回答843 阅读✓ 已解决
1 回答2.2k 阅读
1 回答822 阅读✓ 已解决
2 回答1.1k 阅读
1 回答1.2k 阅读
1 回答709 阅读
1 回答776 阅读
或者,您可以添加第三个参数,这是两个值之间的最大差异,您可以 在此处 阅读。