teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記

2020/10/20 07:09

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -16,4 +16,13 @@
16
16
 
17
17
  > 加えて、例えば3桁の有効数字を考える場合に1.2ではなく1.20と表示する、0.01ではなく0.0100と表示するなど、表示方法についても洗練させられればと考えています。
18
18
 
19
- これについては、簡便な方法が無いか検討中です。
19
+ これについては、簡便な方法が無いか検討中です。
20
+ ```Python
21
+ with decimal.localcontext() as ctx:
22
+ ...
23
+ n += 1
24
+ print(n) # => 1.24
25
+
26
+ n -= 1
27
+ print(n) # => 0.24 これが 0.240 にならないか
28
+ ```

4

修正

2020/10/20 07:09

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -2,18 +2,13 @@
2
2
  それを浮動小数で表現するのには限界があります。decimalモジュールなどを利用しましょう。
3
3
  ```Python
4
4
  import decimal
5
- from decimal import Decimal
6
5
 
7
-
8
6
  with decimal.localcontext() as ctx:
9
7
  ctx.prec = 3 # 有効桁数を設定
10
8
  ctx.rounding = decimal.ROUND_HALF_UP # いわゆる四捨五入を丸め方に設定
11
9
 
12
- # 有効桁数は計算結果に適用される
10
+ # 有効桁数は即座に適用される
13
- n = Decimal('0.2345')
11
+ n = ctx.create_decimal('0.2345')
14
- print(n) # => 0.2345
15
-
16
- n = 1 * n
17
12
  print(n) # => 0.235
18
13
  ```
19
14
 

3

追記

2020/10/20 07:07

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -17,4 +17,8 @@
17
17
  print(n) # => 0.235
18
18
  ```
19
19
 
20
- **参考**: [decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.9.0 ドキュメント](https://docs.python.org/ja/3/library/decimal.html)
20
+ **参考**: [decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.9.0 ドキュメント](https://docs.python.org/ja/3/library/decimal.html)
21
+
22
+ > 加えて、例えば3桁の有効数字を考える場合に1.2ではなく1.20と表示する、0.01ではなく0.0100と表示するなど、表示方法についても洗練させられればと考えています。
23
+
24
+ これについては、簡便な方法が無いか検討中です。

2

修正

2020/10/20 06:57

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,18 +1,20 @@
1
1
  有効数字って、十進表記することを前提に決められていますよね?
2
2
  それを浮動小数で表現するのには限界があります。decimalモジュールなどを利用しましょう。
3
3
  ```Python
4
+ import decimal
4
- from decimal import Decimal, localcontext
5
+ from decimal import Decimal
5
6
 
6
- with localcontext() as ctx:
7
- # 有効桁数を設定
8
- ctx.prec = 3
9
7
 
8
+ with decimal.localcontext() as ctx:
9
+ ctx.prec = 3 # 有効桁数を設定
10
+ ctx.rounding = decimal.ROUND_HALF_UP # いわゆる四捨五入を丸め方に設定
11
+
10
12
  # 有効桁数は計算結果に適用される
11
- n = Decimal('1.2345')
13
+ n = Decimal('0.2345')
12
- print(n) # => 1.2345
14
+ print(n) # => 0.2345
13
15
 
14
16
  n = 1 * n
15
- print(n) # => 1.23
17
+ print(n) # => 0.235
16
18
  ```
17
19
 
18
20
  **参考**: [decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.9.0 ドキュメント](https://docs.python.org/ja/3/library/decimal.html)

1

修正

2020/10/20 06:56

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,17 +1,18 @@
1
1
  有効数字って、十進表記することを前提に決められていますよね?
2
2
  それを浮動小数で表現するのには限界があります。decimalモジュールなどを利用しましょう。
3
3
  ```Python
4
- from decimal import Decimal, getcontext
4
+ from decimal import Decimal, localcontext
5
5
 
6
+ with localcontext() as ctx:
6
- # 有効桁数を設定
7
+ # 有効桁数を設定
7
- getcontext().prec = 3
8
+ ctx.prec = 3
8
9
 
9
- # 有効桁数は計算結果に適用される
10
+ # 有効桁数は計算結果に適用される
10
- n = Decimal('1.2345')
11
+ n = Decimal('1.2345')
11
- print(n) # => 1.2345
12
+ print(n) # => 1.2345
12
13
 
13
- n = 1 * n
14
+ n = 1 * n
14
- print(n) # => 1.23
15
+ print(n) # => 1.23
15
16
  ```
16
17
 
17
18
  **参考**: [decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.9.0 ドキュメント](https://docs.python.org/ja/3/library/decimal.html)