Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 由于精度问题,Python浮点加法测试用例失败_Python 3.x_Python 2.7_Python Unittest - Fatal编程技术网

Python 3.x 由于精度问题,Python浮点加法测试用例失败

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

我在python中定义了一个加法函数,当我使用python unittest模块运行单元测试时,浮点加法测试用例失败。有没有参考过一个好的python模块,它可以轻松地处理浮点运算

感谢您帮助解决加法函数返回小数点后非零数字的错误

我尝试对结果进行取整并运行测试,还尝试将预期结果转换为float

p3.py

功能的单元测试用例在p3_test.py中定义

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)