我的python版本是2.7.13。
我需要用 unittest 模块和我正在测试的数据类型是float。它说要用的文件 assertAlmostEqual 当比较浮点数是否相等时,差异很小。
unittest
assertAlmostEqual
我就是这么做的:
self.assertAlmostEqual(41.7777777777776, 41.777, places=3)
我运行上面的代码,它会产生一个失败的测试结果,如下所示:
self.assertAlmostEqual(41.7777777777776, 41.777, places=3) AssertionError: 41.7777777777776 != 41.777 within 3 places
我做错了什么,还是这是个虫子?
你的数字不等于小数点后3位, as defined by assertAlmostEqual :
通过计算差异,舍入到给定小数位数(默认值7),并与零进行比较,测试第一和第二近似(或近似)相等。
你的数字四舍五入到小数点后三位,其差别是 0.001 .
0.001
从 the docs :
通过计算差异,舍入到给定小数位数(默认值7),并与零进行比较,测试第一和第二近似(或近似)相等。注意,这些方法将值舍入到给定的小数位数(如round()函数),而不是有效数字。
对你来说, round(41.7777777777776 - 41.777, 3) != 0.0 .
round(41.7777777777776 - 41.777, 3) != 0.0