2017-01-24 7 views
-1

Python 2.7を使用する。ここではコードと出力がありますが、私の目的は単純に数値がキューブ番号かどうかを確認することです。なぜint(12)が11になるか

ソースコード

x = 1728 ** (1.0/3) 
print x 
y = int(x) 
print y 

出力

12.0 
11 
+2

'x'はおそらく' 11.9999 ... something'です。 – AlexD

+1

コンピュータのハードウェアとソフトウェアで浮動小数点数を表す一般的な問題について学ぶことをお勧めします。また、Python固有の問題についても読むべきです。 –

+0

@AlexDもしそうなら、この問題を解決するには? –

答えて

3

あなたは浮動小数点を使用している、との結果が12未満、いくつかの非常に非常に小さい部分である、とするときのでxをintにキャストすると、数値の小数部分全体が破棄されます。

あなたがしたいことがの丸数字の場合は、round()を使用してください。

+0

ありがとうございました。数字がキューブ番号であるかどうかを調べるうまい方法がありますか? –

+0

ありがとうございますが、 'round'は最も近い数値を返します。数値がキューブ番号であるかどうかを調べるためにどうすれば使用できますか? –

+1

@LinMa私は、Python 2.xの浮動小数点数学の曖昧さではなく、その問題に固有の情報を得る可能性が高いという新しい質問をすることをお勧めします。 – furkle

関連する問題