x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
import math
を使用できることはわかってsqrt
いますが、上記に対する回答を探しています。Python 2 の整数除算とは何ですか? この動作は Python 3 で修正されています。
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
import math
を使用できることはわかってsqrt
いますが、上記に対する回答を探しています。Python 2 の整数除算とは何ですか? この動作は Python 3 で修正されています。
Python 2 では、sqrt=x**(1/2)
整数除算を行います。1/2 == 0
.
したがって、 x (1/2)は x (0)に等しく、これは 1 です。
それは間違っていません。別の質問に対する正しい答えです。
math モジュールをインポートせずに平方根を計算する場合は、x**(1.0/2)
またはを使用する必要がありますx**(1/2.)
。整数の 1 つは浮動小数点数である必要があります。
注: これは Python 3 では当てはまりませ1/2
ん。0.5
1//2
: と書く必要があります。sqrt = x**(1/2.0)
そうしないと、整数除算が実行され、式は を1/2
返します0
。
この動作は Python 2.x では「正常」ですが、Python 3.x では1/2
と評価され0.5
ます。Python 2.x コードを 3.x の除算書き込みのように動作させたい場合from __future__ import division
、1/2
は に評価され0.5
、下位互換性のために、1//2
は に評価され0
ます。
記録のために、平方根を計算するための推奨される方法は次のとおりです。
import math
math.sqrt(x)
/
Python 2 で整数除算を実行します。
>>> 1/2
0
数値の 1 つが float の場合、期待どおりに機能します。
>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0
あなたが見ているのは整数除算です。デフォルトで浮動小数点除算を取得するには、
from __future__ import division
または、1/2 の 1 または 2 を浮動小数点値に変換できます。
sqrt = x**(1.0/2)