なぜPythonは間違った答えを出すのでしょうか?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
はい、import math
は知っていますし、sqrt
も使っています。しかし、私は上記の答えを探しています。
と書かなければなりません。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
と評価されます。
念のために言っておきますが、平方根を計算するのに好ましい方法は次のとおりです。
import math
math.sqrt(x)