2017-05-27 9 views
1

int(0.9)と入力すると、1ではなく0になります。int(0.9)が0に丸められているのはなぜですか?

なぜ、Pythonが数字を丸めないのか不思議に思っていました。

+0

単純に数値の整数値をとります。私はそれがラウンドよりも簡単な計算であり、私の意見ではそれほどあいまいではないからだと思います。 –

+1

動作は[文書化されています](https://docs.python.org/2/library/functions.html#int) –

答えて

2

int関数を使用すると、小数点は無視され、整数部分が得られます。数字を丸める場合は、round関数を使用してください。

+0

ありがとう、私は 'round'関数については知らなかった – Subscript

3

intは、期待通りに丸め処理を実行せず、0に丸めます。round関数は、指定した最も近い整数に丸められます。

>>> int(0.9) 
0 
>>> int(-0.9) 
0 
>>> round(12.57) 
13 
>>> round(12.57, 1) 
12.6 
2

xが浮動小数点の場合、変換はゼロに向かって切り捨て。

出典:docs

2

シンプル:int()は "floor"として機能するため、丸めを行う代わりに単に切り詰めます。負の値の場合は "ceil"とします。

代わりにround()関数を使用します。

+0

0に丸めると、 'ceil()'ではなく 'ceil()'ではありません。 – Soviut

+0

@NickA:正の入力は 'floor'、負の入力は' ceil'のように動作します。 –

+1

ありがとうございます。そして修正した。これは、私の英語の知識が定期的に崩壊し続ける数少ない機会の1つです。理由は分かりません... – GhostCat

関連する問題