1

次のような区分関数を定義しました。

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
4

2 に答える 2

1

試すfrom __future__ import division

これを説明する PEP 238 へのリンクを次に示します。

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

于 2015-09-30T00:54:24.700 に答える
1

Python では、除算記号演算子 (/) は整数除算を実行します。つまり、分子と分母が両方とも整数の場合、小数点は切り捨てられます。したがって、(1/d) を実行すると、1 と d の両方が整数になるため、たとえば 1/1000 は 0.001 になりますが、整数除算では小数が失われるため、代わりに 0 になります。これを修正するには、すべての定義した数値は、.0 を追加することで浮動します。たとえば、(x < d/2.0)、および (x > -d/2.0) および (1.0/d) これにより、適切な結果が得られるはずです。

于 2015-09-30T00:59:01.783 に答える