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

質問編集履歴

2

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

2018/01/30 05:12

投稿

ID_7UGzV8hCHGs5
ID_7UGzV8hCHGs5

スコア58

title CHANGED
File without changes
body CHANGED
@@ -55,11 +55,11 @@
55
55
 
56
56
 
57
57
  # 追加テストコード
58
- 上記に書いたように初めに1を足したら上手くいきました。
58
+ 上記に書いたように初めに1を足しておと正確な計算が出来てるようなので、
59
- それでは1ではなくもう少し小さい値にしたらどうなるんだろう思いテストしてみました。
59
+ 1ではなくもう少し小さい値にしたらどうなるのか気になり、テストしてみました。
60
60
 
61
61
  結果概要:
62
- 少なくとも「0.0001」より値が小さくなると、計算が上手くいかないという事実が分かりました。
62
+ 初めに足しておく値が少なくとも「0.0001」より小さくなると、計算が上手くいかないという事実が分かりました。
63
63
  この結果が何を意味しているのかは全く分かりませんが、とりあえず報告致します。
64
64
 
65
65
  ```

1

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

2018/01/30 05:12

投稿

ID_7UGzV8hCHGs5
ID_7UGzV8hCHGs5

スコア58

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,51 @@
51
51
  # お願い
52
52
  加算にはbcadd()ではなく通常の"+"をつかうべきなんでしょうか。
53
53
  皆さんどうされているのでしょうか。
54
- よろしくお願い致します。
54
+ よろしくお願い致します。
55
+
56
+
57
+ # 追加テストコード
58
+ 上記に書いたように、初めに1を足したら上手くいきました。
59
+ それでは1ではなく、もう少し小さい値にしたらどうなるんだろうと思いテストしてみました。
60
+
61
+ 結果概要:
62
+ 少なくとも「0.0001」より値が小さくなると、計算が上手くいかないという事実が分かりました。
63
+ この結果が何を意味しているのかは全く分かりませんが、とりあえず報告致します。
64
+
65
+ ```
66
+ ▼0.1を足しておく
67
+ $n1 = 0.1000000100;
68
+ $n2 = 0.1000000200;
69
+ $sum = bcadd($n1, $n2, 10);
70
+ echo sprintf('%.10f', $sum).PHP_EOL;
71
+ //0.2000000300 //正確
72
+
73
+ ▼0.01を足しておく
74
+ $n1 = 0.0100000100;
75
+ $n2 = 0.0100000200;
76
+ $sum = bcadd($n1, $n2, 10);
77
+ echo sprintf('%.10f', $sum).PHP_EOL;
78
+ //0.0200000300 //正確
79
+
80
+ ▼0.001を足しておく
81
+ $n1 = 0.0010000100;
82
+ $n2 = 0.0010000200;
83
+ $sum = bcadd($n1, $n2, 10);
84
+ echo sprintf('%.10f', $sum).PHP_EOL;
85
+ //0.0020000300 //正確
86
+
87
+ ▼0.0001を足しておく
88
+ $n1 = 0.0001000100;
89
+ $n2 = 0.0001000200;
90
+ $sum = bcadd($n1, $n2, 10);
91
+ echo sprintf('%.10f', $sum).PHP_EOL;
92
+ //0.0002000300 //正確
93
+
94
+ ▼0.00001を足しておく
95
+ $n1 = 0.0000100100;
96
+ $n2 = 0.0000100200;
97
+ $sum = bcadd($n1, $n2, 10);
98
+ echo sprintf('%.10f', $sum).PHP_EOL;
99
+ //0.0000000000 //0になった。。
100
+
101
+ ```