回答編集履歴
1
追記
answer
CHANGED
@@ -11,4 +11,25 @@
|
|
11
11
|
ctx.rounding = decimal.ROUND_FLOOR # -∞方向に丸める ≒ 切り捨て
|
12
12
|
v = round(decimal.Decimal(v), 3) # 3桁, FLOORモードで丸め
|
13
13
|
print('{}'.format(v)) # -> 1.888
|
14
|
-
```
|
14
|
+
```
|
15
|
+
|
16
|
+
--- 追記
|
17
|
+
改めた点はlocalcontext()/round()を使わず、quantize()メソッドにしたこと。それと負の場合に切り捨てにならないので、ROUND_DOWNに変更しています。動作確認はPython3.5.1とPython2.7.11。
|
18
|
+
```python
|
19
|
+
from decimal import (Decimal, ROUND_DOWN)
|
20
|
+
|
21
|
+
def round_down3(value):
|
22
|
+
value = Decimal(value).quantize(Decimal('0.001'), rounding=ROUND_DOWN)
|
23
|
+
return str(value)
|
24
|
+
|
25
|
+
print(round_down3(188888.8888888))
|
26
|
+
print(round_down3(1.8888899999))
|
27
|
+
print(round_down3(0.9999999999))
|
28
|
+
print(round_down3(-1.9999999999))
|
29
|
+
|
30
|
+
# 出力
|
31
|
+
# 188888.888
|
32
|
+
# 1.888
|
33
|
+
# 0.999
|
34
|
+
# -1.999
|
35
|
+
```
|