objective-c - 为什么我在 Xcode 单元测试中遇到错误的浮点运算问题?
问题描述
我正在为一个测试时间值的函数编写单元测试。当我手动测试该功能时,它似乎可以正常工作,但是当我使用 Xcode 的单元测试功能对其进行测试时它会失败。我进行了调查,问题似乎与单元测试算法有关。这是单元测试代码:
- (void)testValidTime {
for (double a = 0.0f; a < 25.0f; a++) {
for (double b = 0.0f; b < 0.65f; b += 0.01f) {
double c = a + b;
if (a > 23.0f || b > 0.59f) {
XCTAssertFalse([TimeClass timeIsValid:c], "Test failed - Time passed as valid %f",c);
} else {
XCTAssertTrue([TimeClass timeIsValid:c], "Time failed - Time failed as invalid %f",c);
}
}
}
}
有趣的是,如果我单步执行代码,加法 (c) 的结果将被格式化为错误消息中的正确答案(例如 0.590000) - 但如果我检查 c 实际包含的内容,它会显示为 0.589999974。如果我不能信任调试器(或测试功能),我还能信任什么!?
任何想法都非常感激。
解决方案
推荐阅读
- swift - 如何在 Swift 中的同一视图内的范围之间传递值?
- mysql - MySQL 触发器使用值数组替换重音/不需要的变量
- javascript - Javascript JSON对象错误但json验证器显示有效对象
- winapi - qt5.12用winapi创建对话框
- api - API 客户端 ID 和机密泄露
- azure - 带有自定义映像的 azure devops 自托管容器代理
- discord - 收到 Webhook 上的 Discord Bot 触发器
- amazon-web-services - AWS DocumentDB 连接 python 和 TLS pem 捆绑问题
- rust - 如何通过 Pin 匹配
在锈? - python - Python RegEx Match 虽然匹配但不匹配