回答編集履歴
2
リンクの追加
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
追記
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/
|
15
|
+
**実行結果** [Wandbox](https://wandbox.org/permlink/Eyk23OnUicrw4bhG)
|
15
16
|
```
|
16
17
|
600.0
|
17
18
|
599.9999999999999999999999999
|
18
19
|
600
|
20
|
+
600
|
19
21
|
```
|