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

回答編集履歴

1

小数の計算では誤差が出ることを追記しました

2020/11/28 10:52

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -12,6 +12,15 @@
12
12
   (より正確には二進法で52ビットの仮数部を十進数に変換して約16桁で表示した表現)
13
13
   C言語などでは、これを整数(最大64ビット)の比率で表すことができません。
14
14
 
15
+ 小数計算は以下のように誤差が出ることに注意してください。
16
+
17
+ ```python
18
+ >>> math.sqrt(2)**2
19
+ 2.0000000000000004
20
+ >>> (1.0 / 49.0) * 49.0
21
+ 0.9999999999999999
22
+ ```
23
+
15
24
  3 python3以降での分数表現
16
25
   python3以降では、整数が(メモリが許す限り)無限の桁数を持つようになりました。
17
26
   このため、√2(ルート2)の近似値である1.4142135623730951を6369051672525773/4503599627370496と分数で表すことができます。もちろん、数学的には正しくありません。
@@ -19,7 +28,7 @@
19
28
  数学的に間違った答えを書いても意味がないと思うなら、あきらめてください。
20
29
  数学的に間違っていていいので、分数で書きたいという事であれば、以下のようにして下さい。
21
30
 
22
- ```ここに言語を入力
31
+ ```python
23
32
  import math
24
33
  import fractions
25
34