【发布时间】:2021-11-04 11:52:54
【问题描述】:
我刚刚开始了我的第一门编程课程(不久之后),我正在从事以下任务:
我们被要求创建一个函数 add(x,y) 来添加两个参数。然后我们在测试函数 test_add() 中实现这个函数,并使用断言语句来确保 add-function 正常工作。只要参数是整数,一切都很好。然后,我们被要求在 add-function 中实现一个测试,以确保 0.1 + 0.2 = 0.3。我已经阅读了该主题,并且知道它们的表示将使用二进制分数进行近似,因此我实际添加的是 0.100000000000000005551115123126 + 0.2200000000000000011102230246252 = 0.30000000000000004 并因此,我的测试函数我尝试过的其中一件事是
def add(x,y, tol=1e-9):
if abs(int(x) - x) <= tol:
x == int(x)
if abs(int(y) - y) <= tol:
y == int(y)
return x + y
我也试过
def add(x,y, tol=1e-9):
if isinstance(x, float):
x == round(x, 1)
if isinstance(y, float):
y == round(y, 1)
return x + y
但仍然没有运气......关于我如何实施此测试以通过的任何提示? 提前感谢所有帮助和提示! :)
【问题讨论】:
-
你使用条件运算符比使用相等吗?
-
可以分享一下测试代码吗?
-
我认为您想在
test_add()上指定容差,而不是add()。 -
assert(abs(add(.1, .2) - .3) <= 1e-9) -
显示作业的实际文本。正确确定问题标准很重要。
标签: python testing floating-point integer