Python 3.x 由于精度问题,Python浮点加法测试用例失败
我在python中定义了一个加法函数,当我使用python unittest模块运行单元测试时,浮点加法测试用例失败。有没有参考过一个好的python模块,它可以轻松地处理浮点运算 感谢您帮助解决加法函数返回小数点后非零数字的错误 我尝试对结果进行取整并运行测试,还尝试将预期结果转换为float p3.py 功能的单元测试用例在p3_test.py中定义Python 3.x 由于精度问题,Python浮点加法测试用例失败,python-3.x,python-2.7,python-unittest,Python 3.x,Python 2.7,Python Unittest,我在python中定义了一个加法函数,当我使用python unittest模块运行单元测试时,浮点加法测试用例失败。有没有参考过一个好的python模块,它可以轻松地处理浮点运算 感谢您帮助解决加法函数返回小数点后非零数字的错误 我尝试对结果进行取整并运行测试,还尝试将预期结果转换为float p3.py 功能的单元测试用例在p3_test.py中定义 import unittest from p3 import addition class TestAddition(unittest.T
import unittest
from p3 import addition
class TestAddition(unittest.TestCase):
def test_Addition(self):
self.assertEqual(addition(2, 3), 5)
self.assertEqual(addition(0, -1), -1)
self.assertEqual(addition(-1, 0.99), -0.01)
第三个测试用例失败,错误如下:
self.assertEqual(addition(-1, 0.99), float(0.01))
AssertionError: -0.010000000000000009 != 0.01
----------------------------------------------------------------------
Ran 1 test in 0.000s
期望所有测试用例都能通过我理解浮点表示是我的问题的原因,因为我正在寻找一种合适的方法来解决相同的单元测试。我在unittest模块中找到了一个近似断言方法,解决了这个问题 这是一段新代码
import unittest
from p3 import addition
class TestAddition(unittest.TestCase):
def test_Addition(self):
self.assertEqual(addition(2, 3), 5)
self.assertEqual(addition(0, -1), -1)
self.assertAlmostEqual(addition(-1, 0.99), -0.01, 7)
我想你有两个问题。第一个是-1+0.99=-0.01,而不是0.01。谢谢你钓到了-0.01的布拉特,我纠正了这一点。
import unittest
from p3 import addition
class TestAddition(unittest.TestCase):
def test_Addition(self):
self.assertEqual(addition(2, 3), 5)
self.assertEqual(addition(0, -1), -1)
self.assertAlmostEqual(addition(-1, 0.99), -0.01, 7)