質問編集履歴

1

print(Double(range)/1000) では誤差は生じていませんが、配列pipsに格納すると誤差が生じます。

2018/08/07 03:07

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -13,6 +13,12 @@
13
13
  浮動小数点で誤差が生じてしまうのを修正したいです。
14
14
 
15
15
 
16
+
17
+
18
+
19
+ 質問用にコードを書き換えていたので、そのままのコードを追記しました。
20
+
21
+ print(Double(range)/1000) では誤差は生じていませんが、配列pipsに格納すると誤差が生じます。
16
22
 
17
23
 
18
24
 
@@ -44,6 +50,48 @@
44
50
 
45
51
  }
46
52
 
53
+
54
+
55
+
56
+
57
+
58
+
59
+ //追記
60
+
61
+ func range() {
62
+
63
+
64
+
65
+ for i in 0...9 {
66
+
67
+
68
+
69
+ var range = Int(floor(fabs(Double(newDictionary[2*(2*i+1)][1])! - Double(newDictionary[2*(2*i+4)][4])!) * 100000 ))
70
+
71
+
72
+
73
+ print(Double(range)/1000)
74
+
75
+ //=>12.199 3.9 2.899 8.699 42.4 15.299 0.7 1.8 5.6 10.099
76
+
77
+
78
+
79
+ pips[i] = Double(range) / 1000
80
+
81
+
82
+
83
+ }
84
+
85
+
86
+
87
+ print(pips)
88
+
89
+ //=>[12.199, 3.8999999999999999, 2.899, 8.6989999999999998, 42.399999999999999, 15.298999999999999, 0.69999999999999996, 1.8, 5.5999999999999996, 10.099]
90
+
91
+
92
+
93
+ }
94
+
47
95
  ```
48
96
 
49
97