@@ -4,15 +4,6 @@ bcround() function with early return
44bcmath
55--FILE--
66<?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- ];
167
178$ early_return_cases = [
189 ['123 ' , -4 ],
@@ -38,33 +29,27 @@ $early_return_cases = [
3829];
3930
4031$ 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 => [],
4933];
5034foreach ($ 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" ;
5236 echo $ result ;
53- $ results [' PHP_ROUND_HALF_UP ' ][] = $ result ;
37+ $ results [RoundingMode::HalfAwayFromZero-> name ][] = $ result ;
5438}
5539
5640echo "\n" ;
5741
58- foreach ($ otherModes as $ mode ) {
42+ foreach (RoundingMode::cases () as $ mode ) {
43+ $ results [$ mode ->name ] = [];
5944 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 ;
6247 }
6348
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" ;
6651 } 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" ;
6853 }
6954}
7055?>
@@ -90,10 +75,11 @@ foreach ($otherModes as $mode) {
9075 [-0.0, 0] => 0
9176 [-0.0000, 0] => 0
9277
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