1--TEST-- 2bcround() function with early return 3--EXTENSIONS-- 4bcmath 5--FILE-- 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 17$early_return_cases = [ 18 ['123', -4], 19 ['123.123456', -4], 20 ['123', 1], 21 ['123.5', 1], 22 ['123.5', 2], 23 ['123.0000000000000000000001', 22], 24 ['123.0000000000000000000001', 23], 25 ['-123', -4], 26 ['-123.123456', -4], 27 ['-123', 1], 28 ['-123.5', 1], 29 ['-123.5', 2], 30 ['-123.0000000000000000000001', 22], 31 ['-123.0000000000000000000001', 23], 32 ['0', 0], 33 ['0.0', 0], 34 ['0.0000', 0], 35 ['-0', 0], 36 ['-0.0', 0], 37 ['-0.0000', 0], 38]; 39 40$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' => [], 49]; 50foreach ($early_return_cases as [$num, $precision]) { 51 $result = str_pad("[{$num}, {$precision}]", 33, ' ', STR_PAD_LEFT) . ' => ' . bcround($num, $precision, PHP_ROUND_HALF_UP) . "\n"; 52 echo $result; 53 $results['PHP_ROUND_HALF_UP'][] = $result; 54} 55 56echo "\n"; 57 58foreach ($otherModes as $mode) { 59 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; 62 } 63 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"; 66 } else { 67 echo str_pad($mode, 24, ' ', STR_PAD_LEFT) . ": result is not same to PHP_ROUND_HALF_UP, failed\n"; 68 } 69} 70?> 71--EXPECT-- 72 [123, -4] => 0 73 [123.123456, -4] => 0 74 [123, 1] => 123.0 75 [123.5, 1] => 123.5 76 [123.5, 2] => 123.50 77 [123.0000000000000000000001, 22] => 123.0000000000000000000001 78 [123.0000000000000000000001, 23] => 123.00000000000000000000010 79 [-123, -4] => 0 80 [-123.123456, -4] => 0 81 [-123, 1] => -123.0 82 [-123.5, 1] => -123.5 83 [-123.5, 2] => -123.50 84[-123.0000000000000000000001, 22] => -123.0000000000000000000001 85[-123.0000000000000000000001, 23] => -123.00000000000000000000010 86 [0, 0] => 0 87 [0.0, 0] => 0 88 [0.0000, 0] => 0 89 [-0, 0] => 0 90 [-0.0, 0] => 0 91 [-0.0000, 0] => 0 92 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 98PHP_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 100