質問編集履歴
2
日本語の文法を修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -55,11 +55,11 @@
|
|
55
55
|
|
56
56
|
|
57
57
|
# 追加テストコード
|
58
|
-
上記に書いたように
|
58
|
+
(上記に書いたように)初めに1を足しておくと正確な計算が出来ているようなので、
|
59
|
-
|
59
|
+
1ではなくもう少し小さい値にしたらどうなるのかと気になり、テストしてみました。
|
60
60
|
|
61
61
|
結果概要:
|
62
|
-
少なくとも「0.0001」より
|
62
|
+
初めに足しておく値が少なくとも「0.0001」より小さくなると、計算が上手くいかないという事実が分かりました。
|
63
63
|
この結果が何を意味しているのかは全く分かりませんが、とりあえず報告致します。
|
64
64
|
|
65
65
|
```
|
1
試したコードを追記しました。
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
|
+
```
|