XCTAssertEqual failed: ("1.4") is not equal to ("1.4") -
运行测试时出现以下错误,如屏幕截图所示:
<connectionStrings>
<add name="Model1ConnectionString" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SQLite.EF6;provider connection string='data source="C:\Users\gtmaster\Documents\Visual Studio 2017\Projects\SQLiteTest\SQLiteTest\test.db"'" providerName="System.Data.EntityClient" />
</connectionStrings>
有没有人有任何解决方案或解释?
答案 0 :(得分:3)
如果我没有犯错误,请查看CGFloat
的评估选项:
XCTAssertEqual(_, _, accuracy:)
在这种情况下,您可以设置准确度来评估CGFloat
数字,因为在不考虑帐户准确性的情况下对其进行评估是不对的。
答案 1 :(得分:2)
有没有人有任何解决方案或解释?
解决方案是Oleg所建议的。解释是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。