Python3の割り算は切り捨てではない
チラ裏なので1分で読めます
いったい何です
(int型)÷(int型)=(?型)
Python2→int型(切り捨て)
Python3→float型(型が変化)
マジか〜〜〜
Python2系での割り算
>>> 12/5
2
>>> type(12/5)
<type 'int'>
>>> 12.0/5
2.4
>>> type(12.0/5)
<type 'float'>
とまあ,一般的というか、int型同士の除算は小数点以下切り捨てになります。
型もintです。
(どちらか一方でもfloat型だった場合、float型で返ります)
Python3系での割り算
対してPython3でのint型同士の割り算
>>> 12/5
2.4
>>> type(12/5)
<class 'float'>
>>> 10/5
2.0
>>> type(10/5)
<class 'float'>
割り算の結果は全てfloat型で返ります。
四則演算の挙動が違う、驚愕の仕様でございます。
おまけ
Python3でも/
の代わりに//
を使用することで、小数点以下切り捨ての除算ができます。
>>> 12//5
2
>>> type(12//5)
<class 'int'>
>>> 12.0//5.0
2.0
>>> type(12.0//5.0)
<class 'float'>
以上のように、
//
を使用するとfloat型同士の計算でも切り捨ててしまうので、一括で置換する際は注意が必要です。
(型はfloatなのに切り捨ててるので尚のこと注意)
以上、メモでした。
2020-09-16 追記
数年越しに加筆修正してて気付いたのですが、Python3のほうが出力の型が統一されてる上に情報の欠損少なくて良い気がしますね
切り捨てしたいときはresult = int(int_a / int_b)
的な感じで割り算全体をint型へキャストしてあげればいいだけですし
執筆時は「勝手に変換すんなよー!」とか思って書いた気がします、青いですね
Author And Source
この問題について(Python3の割り算は切り捨てではない), 我々は、より多くの情報をここで見つけました https://qiita.com/yungo/items/42563a3dea7960a01145著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .