次のような区分関数を定義しました。
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
試すfrom __future__ import division
これを説明する PEP 238 へのリンクを次に示します。
Python では、除算記号演算子 (/) は整数除算を実行します。つまり、分子と分母が両方とも整数の場合、小数点は切り捨てられます。したがって、(1/d) を実行すると、1 と d の両方が整数になるため、たとえば 1/1000 は 0.001 になりますが、整数除算では小数が失われるため、代わりに 0 になります。これを修正するには、すべての定義した数値は、.0 を追加することで浮動します。たとえば、(x < d/2.0)、および (x > -d/2.0) および (1.0/d) これにより、適切な結果が得られるはずです。