質問編集履歴

2

日本語の文法を修正しました。

2018/01/30 05:12

投稿

ID_7UGzV8hCHGs5
ID_7UGzV8hCHGs5

スコア58

test CHANGED
File without changes
test CHANGED
@@ -112,15 +112,15 @@
112
112
 
113
113
  # 追加テストコード
114
114
 
115
- 上記に書いたように初めに1を足したら上手くいきました。
115
+ 上記に書いたように初めに1を足しておと正確な計算が出来てるようなので、
116
-
116
+
117
- それでは1ではなくもう少し小さい値にしたらどうなるんだろう思いテストしてみました。
117
+ 1ではなくもう少し小さい値にしたらどうなるのか気になり、テストしてみました。
118
118
 
119
119
 
120
120
 
121
121
  結果概要:
122
122
 
123
- 少なくとも「0.0001」より値が小さくなると、計算が上手くいかないという事実が分かりました。
123
+ 初めに足しておく値が少なくとも「0.0001」より小さくなると、計算が上手くいかないという事実が分かりました。
124
124
 
125
125
  この結果が何を意味しているのかは全く分かりませんが、とりあえず報告致します。
126
126
 

1

試したコードを追記しました。

2018/01/30 05:12

投稿

ID_7UGzV8hCHGs5
ID_7UGzV8hCHGs5

スコア58

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,97 @@
105
105
  皆さんどうされているのでしょうか。
106
106
 
107
107
  よろしくお願い致します。
108
+
109
+
110
+
111
+
112
+
113
+ # 追加テストコード
114
+
115
+ 上記に書いたように、初めに1を足したら上手くいきました。
116
+
117
+ それでは1ではなく、もう少し小さい値にしたらどうなるんだろうと思いテストしてみました。
118
+
119
+
120
+
121
+ 結果概要:
122
+
123
+ 少なくとも「0.0001」より値が小さくなると、計算が上手くいかないという事実が分かりました。
124
+
125
+ この結果が何を意味しているのかは全く分かりませんが、とりあえず報告致します。
126
+
127
+
128
+
129
+ ```
130
+
131
+ ▼0.1を足しておく
132
+
133
+ $n1 = 0.1000000100;
134
+
135
+ $n2 = 0.1000000200;
136
+
137
+ $sum = bcadd($n1, $n2, 10);
138
+
139
+ echo sprintf('%.10f', $sum).PHP_EOL;
140
+
141
+ //0.2000000300 //正確
142
+
143
+
144
+
145
+ ▼0.01を足しておく
146
+
147
+ $n1 = 0.0100000100;
148
+
149
+ $n2 = 0.0100000200;
150
+
151
+ $sum = bcadd($n1, $n2, 10);
152
+
153
+ echo sprintf('%.10f', $sum).PHP_EOL;
154
+
155
+ //0.0200000300 //正確
156
+
157
+
158
+
159
+ ▼0.001を足しておく
160
+
161
+ $n1 = 0.0010000100;
162
+
163
+ $n2 = 0.0010000200;
164
+
165
+ $sum = bcadd($n1, $n2, 10);
166
+
167
+ echo sprintf('%.10f', $sum).PHP_EOL;
168
+
169
+ //0.0020000300 //正確
170
+
171
+
172
+
173
+ ▼0.0001を足しておく
174
+
175
+ $n1 = 0.0001000100;
176
+
177
+ $n2 = 0.0001000200;
178
+
179
+ $sum = bcadd($n1, $n2, 10);
180
+
181
+ echo sprintf('%.10f', $sum).PHP_EOL;
182
+
183
+ //0.0002000300 //正確
184
+
185
+
186
+
187
+ ▼0.00001を足しておく
188
+
189
+ $n1 = 0.0000100100;
190
+
191
+ $n2 = 0.0000100200;
192
+
193
+ $sum = bcadd($n1, $n2, 10);
194
+
195
+ echo sprintf('%.10f', $sum).PHP_EOL;
196
+
197
+ //0.0000000000 //0になった。。
198
+
199
+
200
+
201
+ ```