分段功能不起作用

时间:2015-09-30 00:49:03

标签: python piecewise

我定义了这样的分段函数:

def C1(d,x):
    if ((x<d/2) and (x>-d/2)):
        return (1/d)
    else:
        return 0

但它总是让我回归0

In [23]: C1(1000,1)

Out[23]: 0

2 个答案:

答案 0 :(得分:1)

尝试from __future__ import division

以下是PEP 238的链接,解释了这一点。

https://www.python.org/dev/peps/pep-0238/

答案 1 :(得分:1)

在Python中,除法符号运算符(/)执行整数除法,这意味着如果分子和分母都是整数,则会截断任何小数点。所以当你做(1 / d)时,1和d都是整数,所以它确实如此,例如,1/1000这是0.001,但是在整数除法中你会丢失小数,所以你得到0.要解决这个问题,请完成所有通过添加.0浮动您定义的数字。例如,(x -d / 2.0)和(1.0 / d)这应该给你正确的结果。