英国でデータサイエンスを学ぶ

30代になってから海外で統計学・機械学習・プログラミングを勉強

MENU

Pythonで四捨五入、切り捨て、切り上げ

Pythonを利用していて切り下げが必要になったので、四捨五入や切り上げもまとめて備忘メモです。


Pythonでの四捨五入

round()を使用

小数点以下を四捨五入するにはround()

number = 2/3
print(number)
round_num = round(number)
print(round_num)

これで実行結果は

0.6666666666666666
1

になるので、0.6666・・・・が1に四捨五入されています。

小数点第何位かまで残してそれ以降を四捨五入するにはround(値、桁)

例えば、小数点以下第2位まで残して、小数点以下第3位を四捨五入したい場合は以下のように行います。

number = 2/3
print(number)
round_num = round(number,2)
print(round_num)

これで実行結果は

0.6666666666666666
0.67

となる。

整数のある桁数で四捨五入をしたい場合はround(値、-桁)

例えば、4桁の整数で2桁目を四捨五入したい場合には、以下のように行います。

number = 1234
print(number)
round_num = round(number,-2)
print(round_num)

これで実行結果は

1234
1200

になります。

<注>
ただし、round()では注意が必要でして、公式ドキュメントにもある通りほとんどの少数が浮動小数点で正確に表せないことから、
round(2.675, 2) は2.67になりますし(2.68にならない)、
他にも
round(5.555, 2) は5.55になる(5.56にならない)など、本来求めたい四捨五入からずれることがあります。

2. 組み込み関数 — Python 3.6.5 ドキュメント


Pythonでの切り捨て

mathモジュールのmath.floor()を使用

import math
number = 2/3
print(number)
round_num = math.floor(number)
print(round_num)

これで実行結果は

0.6666666666666666
0

になるので、0.6666・・・・が0に切り下げされています。
9.2. math — 数学関数 — Python 3.6.5 ドキュメント
公式ドキュメントを見ても、math.floorで小数点以下第何位以降を切り捨てといった使い方はできないようです。

int()を使用

やや荒技な気もしますが、小数点以下を切り捨てるのであれば、整数に変換してしまうことと同じです。

import math
number = 2/3
print(number)
round_num = int(number)
print(round_num)

これで実行結果は

0.6666666666666666
0

になるので、0.6666・・・・が0に切り下げされています。

(割り算で表現できる場合)演算子//を使用

モジュールをimportする必要もないので簡単です。

number = 2/3
print(number)
round_num = 2//3
print(round_num)

これで実行結果は

0.6666666666666666
0

になります。


Pythonでの切り上げ

mathモジュールのmath.ceil()を使用

import math
number = 2/3
print(number)
round_num = math.ceil(number)
print(round_num)

これで実行結果は

0.6666666666666666
1

になるので、0.6666・・・・が1に切り下げされています。
math.floorと同様に小数点以下第何位以降を切り上げといった使い方はできないようです。

演算子//を使用

モジュールをimportする必要もないので簡単です。

number = 2/3
print(number)
round_num = -(-2//3)
print(round_num)

これで実行結果は

0.6666666666666666
1

になります。