Pythonで平方根を計算するにはどうすればいいですか?

なぜPythonは間違った答えを出すのでしょうか?

x = 16

sqrt = x**(.5)
returns 4

sqrt = x**(1/2)
returns 1

はい、import mathは知っていますし、sqrtも使っています。しかし、私は上記の答えを探しています。

ソリューション

sqrt=x**(1/2)は整数の割り算をしています。1/2 == 0`.

つまり、最初の例ではx(1/2)、2番目の例ではx(0)を計算していることになります。

つまり、間違っているのではなく、別の質問に対する正しい答えなのです。

解説 (3)

と書かなければなりません。sqrt = x**(1/2.0)と書かないと、整数除算が行われ、式1/20`を返します。

この動作はPython 2.xでは "normal"ですが、Python 3.xでは 1/20.5 と評価されます。Python 2.xのコードをdivisionに関して3.xのように動作させたい場合は、 from __future__ import division と書きます。そうすると、 1/20.5 と評価され、後方互換性のために 1/20 と評価されます。

念のために言っておきますが、平方根を計算するのに好ましい方法は次のとおりです。

import math
math.sqrt(x)
解説 (0)

/ は Python 2 で整数の除算を行います。

>>> 1/2
0

数値の1つが浮動小数点の場合は、期待通りに動作します。

>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0
解説 (0)