@@ -4,6 +4,16 @@ bcround() function with early return
4
4
bcmath
5
5
--FILE--
6
6
<?php
7
+ $ otherModes = [
8
+ 'PHP_ROUND_HALF_DOWN ' ,
9
+ 'PHP_ROUND_HALF_EVEN ' ,
10
+ 'PHP_ROUND_HALF_ODD ' ,
11
+ 'PHP_ROUND_FLOOR ' ,
12
+ 'PHP_ROUND_CEILING ' ,
13
+ 'PHP_ROUND_AWAY_FROM_ZERO ' ,
14
+ 'PHP_ROUND_TOWARD_ZERO ' ,
15
+ ];
16
+
7
17
$ early_return_cases = [
8
18
['123 ' , -3 ],
9
19
['123 ' , -4 ],
@@ -31,8 +41,35 @@ $early_return_cases = [
31
41
['-0.0000 ' , 0 ],
32
42
];
33
43
44
+ $ results = [
45
+ 'PHP_ROUND_HALF_UP ' => [],
46
+ 'PHP_ROUND_HALF_DOWN ' => [],
47
+ 'PHP_ROUND_HALF_EVEN ' => [],
48
+ 'PHP_ROUND_HALF_ODD ' => [],
49
+ 'PHP_ROUND_FLOOR ' => [],
50
+ 'PHP_ROUND_CEIL ' => [],
51
+ 'PHP_ROUND_AWAY_FROM_ZERO ' => [],
52
+ 'PHP_ROUND_TOWARD_ZERO ' => [],
53
+ ];
34
54
foreach ($ early_return_cases as [$ num , $ precision ]) {
35
- echo str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ), " => " , bcround ($ num , $ precision , PHP_ROUND_HALF_UP ), "\n" ;
55
+ $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , PHP_ROUND_HALF_UP ) . "\n" ;
56
+ echo $ result ;
57
+ $ results ['PHP_ROUND_HALF_UP ' ][] = $ result ;
58
+ }
59
+
60
+ echo "\n" ;
61
+
62
+ foreach ($ otherModes as $ mode ) {
63
+ foreach ($ early_return_cases as [$ num , $ precision ]) {
64
+ $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , constant ($ mode )) . "\n" ;
65
+ $ results [$ mode ][] = $ result ;
66
+ }
67
+
68
+ if ($ results ['PHP_ROUND_HALF_UP ' ] === $ results [$ mode ]) {
69
+ echo str_pad ($ mode , 24 , ' ' , STR_PAD_LEFT ) . ": result is same to PHP_ROUND_HALF_UP \n" ;
70
+ } else {
71
+ echo str_pad ($ mode , 24 , ' ' , STR_PAD_LEFT ) . ": result is not same to PHP_ROUND_HALF_UP, failed \n" ;
72
+ }
36
73
}
37
74
?>
38
75
--EXPECT--
@@ -60,3 +97,11 @@ foreach ($early_return_cases as [$num, $precision]) {
60
97
[-0, 0] => 0
61
98
[-0.0, 0] => 0
62
99
[-0.0000, 0] => 0
100
+
101
+ PHP_ROUND_HALF_DOWN: result is same to PHP_ROUND_HALF_UP
102
+ PHP_ROUND_HALF_EVEN: result is same to PHP_ROUND_HALF_UP
103
+ PHP_ROUND_HALF_ODD: result is same to PHP_ROUND_HALF_UP
104
+ PHP_ROUND_FLOOR: result is same to PHP_ROUND_HALF_UP
105
+ PHP_ROUND_CEILING: result is same to PHP_ROUND_HALF_UP
106
+ PHP_ROUND_AWAY_FROM_ZERO: result is same to PHP_ROUND_HALF_UP
107
+ PHP_ROUND_TOWARD_ZERO: result is same to PHP_ROUND_HALF_UP
0 commit comments