回答編集履歴

5

追記

2020/10/20 07:09

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -35,3 +35,21 @@
35
35
 
36
36
 
37
37
  これについては、簡便な方法が無いか検討中です。
38
+
39
+ ```Python
40
+
41
+ with decimal.localcontext() as ctx:
42
+
43
+ ...
44
+
45
+ n += 1
46
+
47
+ print(n) # => 1.24
48
+
49
+
50
+
51
+ n -= 1
52
+
53
+ print(n) # => 0.24 これが 0.240 にならないか
54
+
55
+ ```

4

修正

2020/10/20 07:09

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -6,11 +6,7 @@
6
6
 
7
7
  import decimal
8
8
 
9
- from decimal import Decimal
10
-
11
9
 
12
-
13
-
14
10
 
15
11
  with decimal.localcontext() as ctx:
16
12
 
@@ -20,15 +16,9 @@
20
16
 
21
17
 
22
18
 
23
- # 有効桁数は計算結果に適用される
19
+ # 有効桁数は即座に適用される
24
20
 
25
- n = Decimal('0.2345')
21
+ n = ctx.create_decimal('0.2345')
26
-
27
- print(n) # => 0.2345
28
-
29
-
30
-
31
- n = 1 * n
32
22
 
33
23
  print(n) # => 0.235
34
24
 

3

追記

2020/10/20 07:07

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -37,3 +37,11 @@
37
37
 
38
38
 
39
39
  **参考**: [decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.9.0 ドキュメント](https://docs.python.org/ja/3/library/decimal.html)
40
+
41
+
42
+
43
+ > 加えて、例えば3桁の有効数字を考える場合に1.2ではなく1.20と表示する、0.01ではなく0.0100と表示するなど、表示方法についても洗練させられればと考えています。
44
+
45
+
46
+
47
+ これについては、簡便な方法が無いか検討中です。

2

修正

2020/10/20 06:57

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -4,29 +4,33 @@
4
4
 
5
5
  ```Python
6
6
 
7
+ import decimal
8
+
7
- from decimal import Decimal, localcontext
9
+ from decimal import Decimal
8
10
 
9
11
 
10
12
 
11
- with localcontext() as ctx:
12
13
 
13
- # 有効桁数を設定
14
14
 
15
+ with decimal.localcontext() as ctx:
16
+
15
- ctx.prec = 3
17
+ ctx.prec = 3 # 有効桁数を設定
18
+
19
+ ctx.rounding = decimal.ROUND_HALF_UP # いわゆる四捨五入を丸め方に設定
16
20
 
17
21
 
18
22
 
19
23
  # 有効桁数は計算結果に適用される
20
24
 
21
- n = Decimal('1.2345')
25
+ n = Decimal('0.2345')
22
26
 
23
- print(n) # => 1.2345
27
+ print(n) # => 0.2345
24
28
 
25
29
 
26
30
 
27
31
  n = 1 * n
28
32
 
29
- print(n) # => 1.23
33
+ print(n) # => 0.235
30
34
 
31
35
  ```
32
36
 

1

修正

2020/10/20 06:56

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -4,27 +4,29 @@
4
4
 
5
5
  ```Python
6
6
 
7
- from decimal import Decimal, getcontext
7
+ from decimal import Decimal, localcontext
8
8
 
9
9
 
10
10
 
11
- # 有効桁数を設定
11
+ with localcontext() as ctx:
12
12
 
13
+ # 有効桁数を設定
14
+
13
- getcontext().prec = 3
15
+ ctx.prec = 3
14
16
 
15
17
 
16
18
 
17
- # 有効桁数は計算結果に適用される
19
+ # 有効桁数は計算結果に適用される
18
20
 
19
- n = Decimal('1.2345')
21
+ n = Decimal('1.2345')
20
22
 
21
- print(n) # => 1.2345
23
+ print(n) # => 1.2345
22
24
 
23
25
 
24
26
 
25
- n = 1 * n
27
+ n = 1 * n
26
28
 
27
- print(n) # => 1.23
29
+ print(n) # => 1.23
28
30
 
29
31
  ```
30
32