分段函数不起作用
Piecewise function not working
我定义了一个这样的分段函数:
def C1(d,x):
if ((x<d/2) and (x>-d/2)):
return (1/d)
else:
return 0
但它总是return我0
In [23]: C1(1000,1)
Out[23]: 0
尝试from __future__ import division
这是 PEP 238 的 link 解释了这一点。
在Python中,除号运算符(/)执行整数除法,即如果分子和分母均为整数,则小数点将被截断。所以当你做 (1/d) 时,1 和 d 都是整数,所以它确实是整数,例如 1/1000 是 0.001 但在整数除法中你丢失了小数所以你得到的是 0。要解决这个问题,请将所有您定义的数字通过添加 .0 浮动。例如,(x < d/2.0) 和 (x > -d/2.0) 和 (1.0/d) 这应该会给您正确的结果。
我定义了一个这样的分段函数:
def C1(d,x):
if ((x<d/2) and (x>-d/2)):
return (1/d)
else:
return 0
但它总是return我0
In [23]: C1(1000,1)
Out[23]: 0
尝试from __future__ import division
这是 PEP 238 的 link 解释了这一点。
在Python中,除号运算符(/)执行整数除法,即如果分子和分母均为整数,则小数点将被截断。所以当你做 (1/d) 时,1 和 d 都是整数,所以它确实是整数,例如 1/1000 是 0.001 但在整数除法中你丢失了小数所以你得到的是 0。要解决这个问题,请将所有您定义的数字通过添加 .0 浮动。例如,(x < d/2.0) 和 (x > -d/2.0) 和 (1.0/d) 这应该会给您正确的结果。