2016-09-05 22 views
-2

I次のコードを有する:戻り型()

a_round = round (3.5) # First use of a_round 
a_round = 4.5 # Incompatible types, since a_round is regarded as an int 

それがラウンドの戻り値は()intとしてみなされることが判明します。これがそうであることを 番目のステートメントでは、mypyは不平を言うので、私は結論:

Incompatible types in assignment (expression has type "float",variable has type "int") 

私は、Python 3.5を使用していますので、それはフロートにする必要があります。私は何が欠けている。私は何とかPythonバージョンについてmypyにヒントを与えるべきでしょうか?どのくらい正確に?

+1

は何ですか_actual_問題/エラーが表示されますか?むしろ「それは思われる」声明ではない。 –

+1

あなたの質問がここにあるのは確かではありません。あなたの新しいスカラーへの参照をバインドしているので、ここでは異なる型です。sp 'a_round'は2行目の後に浮動小数点になります – EdChum

+0

@Lightness軌道のレース:私は質問を編集しました –

答えて

0

:あなたのpython 3.5を使用している場合浮かぶように明示的にキャストする必要があります

type (round (3.5, 0)) # <class 'float'> 
type (round (3.5)) # <class 'int'> 
1

それはあなたの実装に依存します:もちろん

>>> round(3.5) 
4 
>>> type(round(3.5)) 
<class 'int'> 
>>> round(3.5,1) 
3.5 
>>> type(round(3.5,1)) 
<class 'float'> 

すべてのケースでフロートを作成することは簡単です:

>>> float(round(3.5)) 
4.0 
>>> type(float(round(3.5))) 
<class 'float'> 
0

はのは、このスクリプトを調べてみましょう:オン

a_round = round(3.5) # First use of a_round 
print(a_round.__class__) 
a_round = 4.5 # Incompatible types, since a_round is regarded as an int 
print(a_round.__class__) 

python 2.7結果は次のとおりです。

<type 'float'> 
<type 'float'> 

しかし、パイソン3.5には次のようになります。

<class 'int'> 
<class 'float'> 

ソリューション:完全に明確にするために

a_round = float(round(3.5))