Python3でint(a/b)とa//bが等しくならない場合
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://joppot.s3.amazonaws.com/wp-content/uploads/2014/01/python-logo.jpg" imageanchor="1" ><img border="0" src="https://joppot.s3.amazonaws.com/wp-content/uploads/2014/01/python-logo.jpg" width="320" height="151" data-original-width="403" data-original-height="190" /></a> aとbは整数とします。 python3だと、a/bは実数をかえしてきます。 int()でキャストすると小数点以下を切り捨てします。 なので、int(a/b)はaをbで割った商を得られるもんだと思ってました。 一方python3ではかわりにa//bでaをbで割った商が得られるようになっています。 (python2ではa/bでaをbで割った商が得られていました) なので、int(a/b)とa//bは同じ結果が返ってくるものだと思ってました。 ```python In [1]: a=100 In [2]: int(a/3) Out[2]: 33 In [3]: a//3 Out[3]: 33 ``` しかし、aの値が大きいとこの結果が異なってしまいます。 ```python In [1]: a=10**18 In [2]: int(a/3) Out[2]: 333333333333333312 In [3]: a//3 Out[3]: 333333333333333333 ``` まあ、普通にa//bを使うようにすればいいんだけど。