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

回答編集履歴

2

リンクの追加

2019/11/22 01:12

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  decimalで正確に表現できるのは十進数の有限小数です。
2
2
  60 / 3600 は 0.16666... なのでdecimalでもどうしても誤差がでます。
3
3
 
4
- ご質問のコードのように整数の割り算を多用するならば、fractionsを使ってはいかがでしょうか。
4
+ ご質問のコードのように整数の割り算を多用するならば、[fractions](https://docs.python.org/ja/3/library/fractions.html)を使ってはいかがでしょうか。
5
5
  ```Python
6
6
  from decimal import Decimal
7
7
  from fractions import Fraction

1

追記

2019/11/22 01:12

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -9,11 +9,13 @@
9
9
  print(10 / (60 / 3600))
10
10
  print(Decimal('10') / (Decimal('60') / Decimal('3600')))
11
11
  print(Fraction(10, Fraction(60, 3600)))
12
+ print(Fraction(10) / (Fraction(60) / Fraction(3600)))
12
13
  ```
13
14
 
14
- **実行結果** [Wandbox](https://wandbox.org/permlink/tU2yQqiT03Gn2yxi)
15
+ **実行結果** [Wandbox](https://wandbox.org/permlink/Eyk23OnUicrw4bhG)
15
16
  ```
16
17
  600.0
17
18
  599.9999999999999999999999999
18
19
  600
20
+ 600
19
21
  ```