【Python】小数点以下の切り捨てならfloor()!
Pythonのmath.floor()を使用すると、数値の小数点以下を切り捨てることができます。
math.floor()とは数値の小数点以下を切り上げて返す関数であり、指定した数値を四捨五入関係なく切り捨てるようになります。
そして、floor()とmap()と組み合わせて使用すると、小数点以下の複数の数値をまとめて切り捨てることができるので、まとめて数値を切り捨てて取得したい時にはとても便利です。
また、小数点以下の数値をint()を使って整数に直すことがあるかと思いますが、floor()とint()では負の数の小数点以下切り捨て方が異なりますので注意してください。
今回はPythonのmath.floor()で小数点以下を切り捨てる方法について以下の内容で解説していきます。
⚫︎ 正の数で小数点以下を切り捨てる場合
⚫︎ 負の数で小数点以下切り捨てる場合
⚫︎ numpy.floor()で小数点以下の切り捨てる方
⚫︎ 小数点以下の複数の数値をまとめて切り捨てる方法
⚫︎ int()とfloot()の違い
目次
math.floor()とは
math.floor()とは、指定した数値の小数点以下を切り上げて返す関数となります。
math.floor()の書き方
math.floor()の書き方は下記となります。
1 |
math.ceil('数値') |
math.floor()のパラメータ
⚫︎ 数値:
小数点の切り上げを行いたい数値を指定する
math.floor()のパラメータに数値を指定することで、指定した数値の小数点以下を切り捨てて返すようになります。
小数点以下の切り捨てるサンプルコード
小数点以下の切り捨てるサンプルコードを紹介します。
正の数で小数点以下を切り捨てる場合
正の数で小数点以下の切り上げを行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
import math num1 = 1000.98 num2 = 1000.14 print(num1) print(num2) print('・math.floor()で正の数の小数点以下を切り捨てる') num1_floor = math.floor(num1) num2_floor = math.floor(num2) print('切り捨て後', num1_floor) print('切り捨て後', num2_floor) |
出力結果
1000.98
1000.14
・math.floor()で正の数の小数点以下を切り捨てる
切り捨て後 1000
切り捨て後 1000
math.floor()によって、正の数の小数点以下を切り捨てています。
負の数で小数点以下切り捨てる場合
負の数で小数点以下の切り捨てを行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import math num1 = -1000.98 num2 = -1000.14 print(num1) print(num2) print('・math.floor()で負の数の小数点以下を切り捨てる') num1_floor = math.floor(num1) num2_floor = math.floor(num2) print('切り捨て後', num1_floor) print('切り捨て後', num2_floor) |
出力結果
-1000.98
-1000.14
・math.floor()で負の数の小数点以下を切り捨てる
切り捨て後 -1001
切り捨て後 -1001
math.floor()によって、負の数の小数点以下を切り捨てています。
負の数の小数点を切り捨てる場合は、「0」に遠ざかるように処理を行うので、「-1000」ではなく「-1001」になります。
numpy.floor()で小数点以下の切り捨てる方法
小数点以下を切り捨てるにはmath.floor()だけでなく、numpy.floor()で小数点以下の切り捨てることもできます。
numpy.floor()も小数点以下を切り捨てますが、切り捨てた数値をfloat型で返します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import numpy num1 = 1234.7 num2 = 1234.3 print(num1) print(num2) print('・numpy.floor()で正の数の小数点以下を切り捨てる') num1_floor = numpy.floor(num1) num2_floor = numpy.floor(num2) print('切り捨て後', num1_floor) print('切り捨て後', num2_floor) num3 = -987.6 num4 = -555.3 print(num3) print(num4) print('・numpy.floor()で負の数の小数点以下を切り捨てる') num3_floor = numpy.floor(num3) num4_floor = numpy.floor(num4) print('切り捨て後', num3_floor) print('切り捨て後', num4_floor) |
出力結果
1234.7
1234.3
・numpy.floor()で正の数の小数点以下を切り捨てる
切り捨て後 1234.0
切り捨て後 1234.0
-987.6
-555.3
・numpy.floor()で負の数の小数点以下を切り捨てる
切り捨て後 -988.0
切り捨て後 -556.0
numpy.floor()で小数点以下を切り捨てて、float型で返しています。
小数点以下の複数の数値をまとめて切り捨てる方法
floor()はmap()と組み合わせて使用することで、小数点以下の複数の数値をまとめて切り捨てることができます。
もし、map()関数ついて詳しく知りたい場合はこちらをご参考ください。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import math import numpy list1 = [4.67, 5.23, 3.89, 56.99, 13.023, 14400.91] list2 = [-0.73, -1.663, -5.111, -8.3452, -100.023, -654.9] print(list1) print(list2) print('・map()で小数点以下をまとめて切り捨てる') list1_floor = list(map(math.floor, list1)) list2_floor = list(map(math.floor, list2)) print('切り捨て後', list1_floor) print('切り捨て後', list2_floor) print('・切り捨てた数値を取り出す') for i in list1_floor: print(i) print('・切り捨てた数値を取り出す') for j in list2_floor: print(j) print('・map()で小数点以下をまとめて切り捨てる') list3_floor = list(map(numpy.floor, list1)) list4_floor = list(map(numpy.floor, list2)) print('切り捨て後', list3_floor) print('切り捨て後', list4_floor) print('・切り捨てた数値を取り出す') for k in list3_floor: print(k) print('・切り捨てた数値を取り出す') for l in list4_floor: print(l) |
出力結果
[4.67, 5.23, 3.89, 56.99, 13.023, 14400.91]
[-0.73, -1.663, -5.111, -8.3452, -100.023, -654.9]
・map()で小数点以下をまとめて切り捨てる
切り捨て後 [4, 5, 3, 56, 13, 14400]
切り捨て後 [-1, -2, -6, -9, -101, -655]
・切り捨てた数値を取り出す
4
5
3
56
13
14400
・切り捨てた数値を取り出す
-1
-2
-6
-9
-101
-655
・map()で小数点以下をまとめて切り捨てる
切り捨て後 [4.0, 5.0, 3.0, 56.0, 13.0, 14400.0]
切り捨て後 [-1.0, -2.0, -6.0, -9.0, -101.0, -655.0]
・切り捨てた数値を取り出す
4.0
5.0
3.0
56.0
13.0
14400.0
・切り捨てた数値を取り出す
-1.0
-2.0
-6.0
-9.0
-101.0
-655.0
floor()とmap()によって、小数点以下の複数の数値をまとめて切り捨てています。
そして、切り捨てた複数の数値をfor文で取り出しています。
int()とfloot()の違い
floor()の他にもint()で小数点以下を切り捨てることができますが、負の数に対して使用すると異なる値を返すようになります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import math num1 = 1000.98 num2 = 1000.14 print(num1) print(num2) print('・正の数の小数点以下を切り捨てる') num1_floor = math.floor(num1) num2_floor = math.floor(num2) print('・floor()使用後', num1_floor, num2_floor) num1_int = int(num1) num2_int = int(num2) print('・int()使用後', num1_int, num2_int) num3 = -1000.98 num4 = -1000.14 print(num3) print(num4) print('・負の数の小数点以下を切り捨てる') num3_floor = math.floor(num3) num4_floor = math.floor(num4) print('・floor()使用後', num3_floor, num4_floor) num3_int = int(num3) num4_int = int(num4) print('・int()使用後', num3_int, num4_int) |
出力結果
1000.98
1000.14
・正の数の小数点以下を切り捨てる
・floor()使用後 1000 1000
・int()使用後 1000 1000
-1000.98
-1000.14
・負の数の小数点以下を切り捨てる
・floor()使用後 -1001 -1001
・int()使用後 -1000 -1000
正の数では問題はありませんが、負の数の場合はceil()と同じ切り上げが行われています。
その為、int()を使用する際には注意しましょう。
今回のポイント
math.floor()で小数点以下の数値を切り捨てる
Pythonで小数点以下の数値を切り捨てるにはmath.floor()を使用する。
⚫︎ math.floor()で小数点以下を切り捨てると四捨五入関係なく切り捨てが行われる
⚫︎ math.floor()で負の数の小数点以下を切り捨てると0から遠ざかるように切り捨てが行われる
⚫︎ 小数点以下を切り捨てるにはmath.floor()だけでなく、numpy.floor()で小数点以下の切り捨てることもできる
(numpy.floor()はfloat型で返す)
⚫︎ floor()はmap()と組み合わせて使用することで、小数点以下の複数の数値をまとめて切り捨てることができる
⚫︎ floor()とint()の違いは負の数に対する切り捨て方が異なる
(floor()だと0から遠ざかるように切り捨てるが、int()は0に近づくように切り上げる)
関連記事
Pythonのceil()で数値の小数点以下を切り上げる方法について詳しく知りたい場合はこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。