let xCoordinate: CGFloat = 1.4
XCTAssertEqual(view.frame.origin.x, xCoordinate)
运行测试时出现以下错误,如屏幕截图所示:
XCTAssertEqual failed: ("1.4") is not equal to ("1.4") -
有没有人有任何解决方案或解释?
let xCoordinate: CGFloat = 1.4
XCTAssertEqual(view.frame.origin.x, xCoordinate)
运行测试时出现以下错误,如屏幕截图所示:
XCTAssertEqual failed: ("1.4") is not equal to ("1.4") -
有没有人有任何解决方案或解释?
如果我没有犯错,请查看以下评估选项CGFloat
:
XCTAssertEqual(_, _, accuracy:)
在这种情况下,您可以设置准确性来评估CGFloat
数字,因为在不考虑准确性的情况下评估它们是不正确的。
有没有人有任何解决方案或解释?
解决方案是奥列格所建议的。解释是 1.4 不能表示为 CGFloat。在普通小数中,您可能已经注意到,除非分数的分母只能被 2 或 5(10 的因数)整除,否则当您尝试将其转换为十进制数时,它会一直持续下去。例如。1/3 是 0.33333333333...
这同样适用于 CGFloats,除了基数是 2,而不是 10。1.4 是 7/5。5 不能被 2 整除,因此如果转换为二进制数,它将永远重复。实际上,它将是 1.0110011 ......
因此,您view.frame.origin.x
可能是一个接近 1.4 但不完全是 1.4 的数字,您xCoordinate
将是一个非常接近 1.4 的不同数字。这两个数字比较不相等,但是当四舍五入到要打印的小数点后六位时,看起来像 1.4。