なぜPythonは間違った答えを出すのでしょうか?
x = 16 sqrt = x**(.5) returns 4 sqrt = x**(1/2) returns 1
はい、import mathは知っていますし、sqrtも使っています。しかし、私は上記の答えを探しています。
import math
sqrt
sqrt=x**(1/2)は整数の割り算をしています。1/2 == 0`.
は整数の割り算をしています。
つまり、最初の例ではx(1/2)、2番目の例ではx(0)を計算していることになります。
つまり、間違っているのではなく、別の質問に対する正しい答えなのです。
と書かなければなりません。sqrt = x**(1/2.0)と書かないと、整数除算が行われ、式1/2は0`を返します。
と書かないと、整数除算が行われ、式
は
この動作はPython 2.xでは "normal"ですが、Python 3.xでは 1/2 は 0.5 と評価されます。Python 2.xのコードをdivisionに関して3.xのように動作させたい場合は、 from __future__ import division と書きます。そうすると、 1/2 は 0.5 と評価され、後方互換性のために 1/2 は 0 と評価されます。
1/2
0.5
from __future__ import division
0
念のために言っておきますが、平方根を計算するのに好ましい方法は次のとおりです。
import math math.sqrt(x)
/ は Python 2 で整数の除算を行います。
/
>>> 1/2 0
数値の1つが浮動小数点の場合は、期待通りに動作します。
>>> 1.0/2 0.5 >>> 16**(1.0/2) 4.0
sqrt=x**(1/2)
は整数の割り算をしています。
1/2 == 0`.つまり、最初の例ではx(1/2)、2番目の例ではx(0)を計算していることになります。
つまり、間違っているのではなく、別の質問に対する正しい答えなのです。
と書かなければなりません。sqrt = x**(1/2.0)
と書かないと、整数除算が行われ、式
1/2は
0`を返します。この動作はPython 2.xでは "normal"ですが、Python 3.xでは
1/2
は0.5
と評価されます。Python 2.xのコードをdivisionに関して3.xのように動作させたい場合は、from __future__ import division
と書きます。そうすると、1/2
は0.5
と評価され、後方互換性のために1/2
は0
と評価されます。念のために言っておきますが、平方根を計算するのに好ましい方法は次のとおりです。
/
は Python 2 で整数の除算を行います。数値の1つが浮動小数点の場合は、期待通りに動作します。