1--TEST--
2round() with different rounding modes
3--FILE--
4<?php
5$modes = [
6    "PHP_ROUND_HALF_UP" => PHP_ROUND_HALF_UP,
7    "PHP_ROUND_HALF_DOWN" => PHP_ROUND_HALF_DOWN,
8    "PHP_ROUND_HALF_EVEN" => PHP_ROUND_HALF_EVEN,
9    "PHP_ROUND_HALF_ODD" => PHP_ROUND_HALF_ODD,
10];
11
12$numbers = [
13    2.5,
14    -2.5,
15    3.5,
16    -3.5,
17    7,
18    -7,
19    0.61,
20    0.69,
21    0,
22    1.9999,
23    -1.9999,
24    0.0001,
25    -0.0001,
26];
27$precisions = [0, 1, 2, 10];
28
29foreach ($modes as $modeKey => $mode) {
30    echo "mode: $modeKey\n";
31    foreach ($precisions as $precision) {
32        echo "\tprecision: $precision\n";
33        foreach ($numbers as $number) {
34            $result = round($number, $precision, $mode);
35            echo "\t\t" .
36                str_pad($number, 7, " ", STR_PAD_LEFT) .
37                " => $result\n";
38        }
39        echo "\n";
40    }
41}
42
43?>
44--EXPECT--
45mode: PHP_ROUND_HALF_UP
46	precision: 0
47		    2.5 => 3
48		   -2.5 => -3
49		    3.5 => 4
50		   -3.5 => -4
51		      7 => 7
52		     -7 => -7
53		   0.61 => 1
54		   0.69 => 1
55		      0 => 0
56		 1.9999 => 2
57		-1.9999 => -2
58		 0.0001 => 0
59		-0.0001 => -0
60
61	precision: 1
62		    2.5 => 2.5
63		   -2.5 => -2.5
64		    3.5 => 3.5
65		   -3.5 => -3.5
66		      7 => 7
67		     -7 => -7
68		   0.61 => 0.6
69		   0.69 => 0.7
70		      0 => 0
71		 1.9999 => 2
72		-1.9999 => -2
73		 0.0001 => 0
74		-0.0001 => -0
75
76	precision: 2
77		    2.5 => 2.5
78		   -2.5 => -2.5
79		    3.5 => 3.5
80		   -3.5 => -3.5
81		      7 => 7
82		     -7 => -7
83		   0.61 => 0.61
84		   0.69 => 0.69
85		      0 => 0
86		 1.9999 => 2
87		-1.9999 => -2
88		 0.0001 => 0
89		-0.0001 => -0
90
91	precision: 10
92		    2.5 => 2.5
93		   -2.5 => -2.5
94		    3.5 => 3.5
95		   -3.5 => -3.5
96		      7 => 7
97		     -7 => -7
98		   0.61 => 0.61
99		   0.69 => 0.69
100		      0 => 0
101		 1.9999 => 1.9999
102		-1.9999 => -1.9999
103		 0.0001 => 0.0001
104		-0.0001 => -0.0001
105
106mode: PHP_ROUND_HALF_DOWN
107	precision: 0
108		    2.5 => 2
109		   -2.5 => -2
110		    3.5 => 3
111		   -3.5 => -3
112		      7 => 7
113		     -7 => -7
114		   0.61 => 1
115		   0.69 => 1
116		      0 => 0
117		 1.9999 => 2
118		-1.9999 => -2
119		 0.0001 => 0
120		-0.0001 => -0
121
122	precision: 1
123		    2.5 => 2.5
124		   -2.5 => -2.5
125		    3.5 => 3.5
126		   -3.5 => -3.5
127		      7 => 7
128		     -7 => -7
129		   0.61 => 0.6
130		   0.69 => 0.7
131		      0 => 0
132		 1.9999 => 2
133		-1.9999 => -2
134		 0.0001 => 0
135		-0.0001 => -0
136
137	precision: 2
138		    2.5 => 2.5
139		   -2.5 => -2.5
140		    3.5 => 3.5
141		   -3.5 => -3.5
142		      7 => 7
143		     -7 => -7
144		   0.61 => 0.61
145		   0.69 => 0.69
146		      0 => 0
147		 1.9999 => 2
148		-1.9999 => -2
149		 0.0001 => 0
150		-0.0001 => -0
151
152	precision: 10
153		    2.5 => 2.5
154		   -2.5 => -2.5
155		    3.5 => 3.5
156		   -3.5 => -3.5
157		      7 => 7
158		     -7 => -7
159		   0.61 => 0.61
160		   0.69 => 0.69
161		      0 => 0
162		 1.9999 => 1.9999
163		-1.9999 => -1.9999
164		 0.0001 => 0.0001
165		-0.0001 => -0.0001
166
167mode: PHP_ROUND_HALF_EVEN
168	precision: 0
169		    2.5 => 2
170		   -2.5 => -2
171		    3.5 => 4
172		   -3.5 => -4
173		      7 => 7
174		     -7 => -7
175		   0.61 => 1
176		   0.69 => 1
177		      0 => 0
178		 1.9999 => 2
179		-1.9999 => -2
180		 0.0001 => 0
181		-0.0001 => -0
182
183	precision: 1
184		    2.5 => 2.5
185		   -2.5 => -2.5
186		    3.5 => 3.5
187		   -3.5 => -3.5
188		      7 => 7
189		     -7 => -7
190		   0.61 => 0.6
191		   0.69 => 0.7
192		      0 => 0
193		 1.9999 => 2
194		-1.9999 => -2
195		 0.0001 => 0
196		-0.0001 => -0
197
198	precision: 2
199		    2.5 => 2.5
200		   -2.5 => -2.5
201		    3.5 => 3.5
202		   -3.5 => -3.5
203		      7 => 7
204		     -7 => -7
205		   0.61 => 0.61
206		   0.69 => 0.69
207		      0 => 0
208		 1.9999 => 2
209		-1.9999 => -2
210		 0.0001 => 0
211		-0.0001 => -0
212
213	precision: 10
214		    2.5 => 2.5
215		   -2.5 => -2.5
216		    3.5 => 3.5
217		   -3.5 => -3.5
218		      7 => 7
219		     -7 => -7
220		   0.61 => 0.61
221		   0.69 => 0.69
222		      0 => 0
223		 1.9999 => 1.9999
224		-1.9999 => -1.9999
225		 0.0001 => 0.0001
226		-0.0001 => -0.0001
227
228mode: PHP_ROUND_HALF_ODD
229	precision: 0
230		    2.5 => 3
231		   -2.5 => -3
232		    3.5 => 3
233		   -3.5 => -3
234		      7 => 7
235		     -7 => -7
236		   0.61 => 1
237		   0.69 => 1
238		      0 => 0
239		 1.9999 => 2
240		-1.9999 => -2
241		 0.0001 => 0
242		-0.0001 => -0
243
244	precision: 1
245		    2.5 => 2.5
246		   -2.5 => -2.5
247		    3.5 => 3.5
248		   -3.5 => -3.5
249		      7 => 7
250		     -7 => -7
251		   0.61 => 0.6
252		   0.69 => 0.7
253		      0 => 0
254		 1.9999 => 2
255		-1.9999 => -2
256		 0.0001 => 0
257		-0.0001 => -0
258
259	precision: 2
260		    2.5 => 2.5
261		   -2.5 => -2.5
262		    3.5 => 3.5
263		   -3.5 => -3.5
264		      7 => 7
265		     -7 => -7
266		   0.61 => 0.61
267		   0.69 => 0.69
268		      0 => 0
269		 1.9999 => 2
270		-1.9999 => -2
271		 0.0001 => 0
272		-0.0001 => -0
273
274	precision: 10
275		    2.5 => 2.5
276		   -2.5 => -2.5
277		    3.5 => 3.5
278		   -3.5 => -3.5
279		      7 => 7
280		     -7 => -7
281		   0.61 => 0.61
282		   0.69 => 0.69
283		      0 => 0
284		 1.9999 => 1.9999
285		-1.9999 => -1.9999
286		 0.0001 => 0.0001
287		-0.0001 => -0.0001
288