@@ -4,15 +4,6 @@ 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
8
$ early_return_cases = [
18
9
['123 ' , -4 ],
@@ -38,33 +29,27 @@ $early_return_cases = [
38
29
];
39
30
40
31
$ results = [
41
- 'PHP_ROUND_HALF_UP ' => [],
42
- 'PHP_ROUND_HALF_DOWN ' => [],
43
- 'PHP_ROUND_HALF_EVEN ' => [],
44
- 'PHP_ROUND_HALF_ODD ' => [],
45
- 'PHP_ROUND_FLOOR ' => [],
46
- 'PHP_ROUND_CEIL ' => [],
47
- 'PHP_ROUND_AWAY_FROM_ZERO ' => [],
48
- 'PHP_ROUND_TOWARD_ZERO ' => [],
32
+ RoundingMode::HalfAwayFromZero->name => [],
49
33
];
50
34
foreach ($ early_return_cases as [$ num , $ precision ]) {
51
- $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , PHP_ROUND_HALF_UP ) . "\n" ;
35
+ $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , RoundingMode::HalfAwayFromZero ) . "\n" ;
52
36
echo $ result ;
53
- $ results [' PHP_ROUND_HALF_UP ' ][] = $ result ;
37
+ $ results [RoundingMode::HalfAwayFromZero-> name ][] = $ result ;
54
38
}
55
39
56
40
echo "\n" ;
57
41
58
- foreach ($ otherModes as $ mode ) {
42
+ foreach (RoundingMode::cases () as $ mode ) {
43
+ $ results [$ mode ->name ] = [];
59
44
foreach ($ early_return_cases as [$ num , $ precision ]) {
60
- $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , constant ( $ mode) ) . "\n" ;
61
- $ results [$ mode ][] = $ result ;
45
+ $ result = str_pad ("[ {$ num }, {$ precision }] " , 33 , ' ' , STR_PAD_LEFT ) . ' => ' . bcround ($ num , $ precision , $ mode ) . "\n" ;
46
+ $ results [$ mode-> name ][] = $ result ;
62
47
}
63
48
64
- if ($ results [' PHP_ROUND_HALF_UP ' ] === $ results [$ mode ]) {
65
- echo str_pad ($ mode , 24 , ' ' , STR_PAD_LEFT ) . ": result is same to PHP_ROUND_HALF_UP \n" ;
49
+ if ($ results [RoundingMode::HalfAwayFromZero-> name ] === $ results [$ mode-> name ]) {
50
+ echo str_pad ($ mode-> name , 24 , ' ' , STR_PAD_LEFT ) . ": result is same to HalfAwayFromZero \n" ;
66
51
} else {
67
- echo str_pad ($ mode , 24 , ' ' , STR_PAD_LEFT ) . ": result is not same to PHP_ROUND_HALF_UP , failed \n" ;
52
+ echo str_pad ($ mode-> name , 24 , ' ' , STR_PAD_LEFT ) . ": result is not same to HalfAwayFromZero , failed \n" ;
68
53
}
69
54
}
70
55
?>
@@ -90,10 +75,11 @@ foreach ($otherModes as $mode) {
90
75
[-0.0, 0] => 0
91
76
[-0.0000, 0] => 0
92
77
93
- PHP_ROUND_HALF_DOWN: result is same to PHP_ROUND_HALF_UP
94
- PHP_ROUND_HALF_EVEN: result is same to PHP_ROUND_HALF_UP
95
- PHP_ROUND_HALF_ODD: result is same to PHP_ROUND_HALF_UP
96
- PHP_ROUND_FLOOR: result is same to PHP_ROUND_HALF_UP
97
- PHP_ROUND_CEILING: result is same to PHP_ROUND_HALF_UP
98
- PHP_ROUND_AWAY_FROM_ZERO: result is same to PHP_ROUND_HALF_UP
99
- PHP_ROUND_TOWARD_ZERO: result is same to PHP_ROUND_HALF_UP
78
+ HalfAwayFromZero: result is same to HalfAwayFromZero
79
+ HalfTowardsZero: result is same to HalfAwayFromZero
80
+ HalfEven: result is same to HalfAwayFromZero
81
+ HalfOdd: result is same to HalfAwayFromZero
82
+ TowardsZero: result is same to HalfAwayFromZero
83
+ AwayFromZero: result is same to HalfAwayFromZero
84
+ NegativeInfinity: result is same to HalfAwayFromZero
85
+ PositiveInfinity: result is same to HalfAwayFromZero
0 commit comments