decimal#
quantize() メソッドで任意の桁で小数点を丸めることができます。
from decimal import Decimal,ROUND_DOWN
workingtime = 7.5234
time = Decimal(str(workingtime)).quantize(Decimal('.01'), rounding=ROUND_DOWN)
print(time)
# 7.52
rouding 引数で指定できる丸めモードは以下の通りです。
丸めモード | 説明 |
---|---|
ROUND_CEILING | Infinity 方向に丸めます。 |
ROUND_DOWN | ゼロ方向に丸めます。 |
ROUND_FLOOR | -Infinity 方向に丸めます。 |
ROUND_HALF_DOWN | 近い方に、引き分けはゼロ方向に向けて丸めます。 |
ROUND_HALF_EVEN | 近い方に、引き分けは偶数整数方向に向けて丸めます。 |
ROUND_HALF_UP | 近い方に、引き分けはゼロから遠い方向に向けて丸めます。 |
ROUND_UP | ゼロから遠い方向に丸めます。 |
ROUND_05UP | ゼロ方向に丸めた後の最後の桁が 0 または 5 ならばゼロから遠い方向に、そうでなければゼロ方向に丸めます。 |
Worning
Decimal 関数には文字列型を渡します。
補足:f-string#
f-strings での表示は小数点切り上げです
補足: round#
浮動小数点数に対する round() の振る舞いは意外なものかもしれません: 例えば、 round(2.675, 2) は予想通りの 2.68 ではなく 2.67 を与えます。 これはバグではありません: これはほとんどの小数が浮動小数点数で正確に表せないことの結果です。