1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Tests improvement for round() modes (#11996)

* Improved the tests for round() function

* Add EOL on the file ending
This commit is contained in:
Jorg Adam Sowa
2023-08-24 12:34:37 +02:00
committed by GitHub
parent 0fd226c277
commit 6ee2a63476

View File

@@ -2,37 +2,286 @@
round() with different rounding modes
--FILE--
<?php
var_dump (round (2.5, 0, PHP_ROUND_HALF_UP));
var_dump (round (2.5, 0, PHP_ROUND_HALF_DOWN));
var_dump (round (2.5, 0, PHP_ROUND_HALF_EVEN));
var_dump (round (2.5, 0, PHP_ROUND_HALF_ODD));
var_dump (round (-2.5, 0, PHP_ROUND_HALF_UP));
var_dump (round (-2.5, 0, PHP_ROUND_HALF_DOWN));
var_dump (round (-2.5, 0, PHP_ROUND_HALF_EVEN));
var_dump (round (-2.5, 0, PHP_ROUND_HALF_ODD));
var_dump (round (3.5, 0, PHP_ROUND_HALF_UP));
var_dump (round (3.5, 0, PHP_ROUND_HALF_DOWN));
var_dump (round (3.5, 0, PHP_ROUND_HALF_EVEN));
var_dump (round (3.5, 0, PHP_ROUND_HALF_ODD));
var_dump (round (-3.5, 0, PHP_ROUND_HALF_UP));
var_dump (round (-3.5, 0, PHP_ROUND_HALF_DOWN));
var_dump (round (-3.5, 0, PHP_ROUND_HALF_EVEN));
var_dump (round (-3.5, 0, PHP_ROUND_HALF_ODD));
$modes = [
"PHP_ROUND_HALF_UP" => PHP_ROUND_HALF_UP,
"PHP_ROUND_HALF_DOWN" => PHP_ROUND_HALF_DOWN,
"PHP_ROUND_HALF_EVEN" => PHP_ROUND_HALF_EVEN,
"PHP_ROUND_HALF_ODD" => PHP_ROUND_HALF_ODD,
];
$numbers = [
2.5,
-2.5,
3.5,
-3.5,
7,
-7,
0.61,
0.69,
0,
1.9999,
-1.9999,
0.0001,
-0.0001,
];
$precisions = [0, 1, 2, 10];
foreach ($modes as $modeKey => $mode) {
echo "mode: $modeKey\n";
foreach ($precisions as $precision) {
echo "\tprecision: $precision\n";
foreach ($numbers as $number) {
$result = round($number, $precision);
echo "\t\t" .
str_pad($number, 7, " ", STR_PAD_LEFT) .
" => $result\n";
}
echo "\n";
}
}
?>
--EXPECT--
float(3)
float(2)
float(2)
float(3)
float(-3)
float(-2)
float(-2)
float(-3)
float(4)
float(3)
float(4)
float(3)
float(-4)
float(-3)
float(-4)
float(-3)
mode: PHP_ROUND_HALF_UP
precision: 0
2.5 => 3
-2.5 => -3
3.5 => 4
-3.5 => -4
7 => 7
-7 => -7
0.61 => 1
0.69 => 1
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 1
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.6
0.69 => 0.7
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 2
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 10
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 1.9999
-1.9999 => -1.9999
0.0001 => 0.0001
-0.0001 => -0.0001
mode: PHP_ROUND_HALF_DOWN
precision: 0
2.5 => 3
-2.5 => -3
3.5 => 4
-3.5 => -4
7 => 7
-7 => -7
0.61 => 1
0.69 => 1
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 1
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.6
0.69 => 0.7
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 2
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 10
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 1.9999
-1.9999 => -1.9999
0.0001 => 0.0001
-0.0001 => -0.0001
mode: PHP_ROUND_HALF_EVEN
precision: 0
2.5 => 3
-2.5 => -3
3.5 => 4
-3.5 => -4
7 => 7
-7 => -7
0.61 => 1
0.69 => 1
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 1
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.6
0.69 => 0.7
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 2
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 10
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 1.9999
-1.9999 => -1.9999
0.0001 => 0.0001
-0.0001 => -0.0001
mode: PHP_ROUND_HALF_ODD
precision: 0
2.5 => 3
-2.5 => -3
3.5 => 4
-3.5 => -4
7 => 7
-7 => -7
0.61 => 1
0.69 => 1
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 1
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.6
0.69 => 0.7
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 2
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 2
-1.9999 => -2
0.0001 => 0
-0.0001 => -0
precision: 10
2.5 => 2.5
-2.5 => -2.5
3.5 => 3.5
-3.5 => -3.5
7 => 7
-7 => -7
0.61 => 0.61
0.69 => 0.69
0 => 0
1.9999 => 1.9999
-1.9999 => -1.9999
0.0001 => 0.0001
-0.0001 => -0.0001