質問するログイン新規登録
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

12230閲覧

python3 数値を0.05刻みで丸めるには

yeahboy

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/02/27 08:07

0

0

python3で数値を0.05刻みで切り捨てて丸めるにはどうすればよいでしょうか?
例えば
151.266なら151.25
151.246なら151.20
としたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

まず 2 倍してから 0.1 単位で 切り捨てや四捨五入して、 それを 1/2 倍すればよいと思います。
2 倍する計算は, あまり誤差は発生しません。(多分)
quantize メソッドの rounding で 切り捨て、切り上げ、四捨五入などを制御できます。

eee.py

python3

1from decimal import * 2 3def round_floor(v): 4 return Decimal(str(v * 2)).quantize(Decimal("0.1"), rounding=ROUND_FLOOR) / Decimal("2") 5 6def round_45(v): 7 return Decimal(str(v * 2)).quantize(Decimal("0.1"), rounding=ROUND_HALF_UP) / Decimal("2") 8 9data = [151.200, 151.246, 141.249, 10 151.250, 151.266, 151.299, 11 151.300, 151.349] 12 13for v in data: 14 print('{:.3f} -> {}\t{}'.format(v, round_floor(v), round_45(v)))

実行例
イメージ説明

参考情報

投稿2019/02/27 16:24

katoy

総合スコア22328

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

その数値に20を掛けて、四捨五入し、その結果を20で割ればいいんじゃないかと

投稿2019/02/27 08:23

y_waiwai

総合スコア88180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yeahboy

2019/02/27 08:33

天才的発想ですね・・・ ありがとうございました
guest

0

投稿2019/02/27 08:17

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1def around(x, base): 2 return base * int(x / base) 3 4print(around(151.266, base=0.05)) # 151.25 5print(around(151.246, base=0.05)) # 151.20000000000002

投稿2019/02/27 08:16

編集2019/02/27 08:37
tiitoi

総合スコア21960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/02/27 08:26

それだと >>> around(151.25, base=0.05) 151.20000000000002 になりますよ。
tiitoi

2019/02/27 08:39 編集

151.25 // 0.05 で 3024 になるのは丸め誤差のせいでしょうか? print(int(151.25 / 0.05)) とすれば大丈夫かな
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問