mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Extend the maximum precision round can handle by one digit
Closes #12222
This commit is contained in:
@@ -199,7 +199,7 @@ PHPAPI double _php_math_round(double value, int places, int mode) {
|
||||
fesetround(cpu_round_mode);
|
||||
|
||||
/* This value is beyond our precision, so rounding it is pointless */
|
||||
if (fabs(tmp_value) >= 1e15) {
|
||||
if (fabs(tmp_value) >= 1e16) {
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,65 +82,65 @@ foreach ($testCases as $mode => $cases) {
|
||||
?>
|
||||
--EXPECT--
|
||||
========== PHP_ROUND_HALF_UP ==========
|
||||
float(0.12345678901234565)
|
||||
float(-0.12345678901234565)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(0.1234567890123457)
|
||||
float(-0.1234567890123457)
|
||||
float(12345678901234570)
|
||||
float(-12345678901234570)
|
||||
float(4503599627370496)
|
||||
float(-4503599627370496)
|
||||
|
||||
========== PHP_ROUND_HALF_DOWN ==========
|
||||
float(0.12345678901234565)
|
||||
float(-0.12345678901234565)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234560)
|
||||
float(-12345678901234560)
|
||||
float(4503599627370495)
|
||||
float(-4503599627370495)
|
||||
|
||||
========== PHP_ROUND_HALF_EVEN ==========
|
||||
float(0.12345678901234565)
|
||||
float(-0.12345678901234565)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234560)
|
||||
float(-12345678901234560)
|
||||
float(4503599627370496)
|
||||
float(-4503599627370496)
|
||||
|
||||
========== PHP_ROUND_HALF_ODD ==========
|
||||
float(0.12345678901234565)
|
||||
float(-0.12345678901234565)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(0.1234567890123457)
|
||||
float(-0.1234567890123457)
|
||||
float(12345678901234570)
|
||||
float(-12345678901234570)
|
||||
float(4503599627370495)
|
||||
float(-4503599627370495)
|
||||
|
||||
========== PHP_ROUND_AWAY_FROM_ZERO ==========
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234568)
|
||||
float(-12345678901234568)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(12345678901234570)
|
||||
float(-12345678901234570)
|
||||
float(4503599627370496)
|
||||
float(-4503599627370496)
|
||||
|
||||
========== PHP_ROUND_TOWARD_ZERO ==========
|
||||
float(0.12345678901234566)
|
||||
float(-0.12345678901234566)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234560)
|
||||
float(-12345678901234560)
|
||||
float(4503599627370495)
|
||||
float(-4503599627370495)
|
||||
|
||||
========== PHP_ROUND_CEILING ==========
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(12345678901234570)
|
||||
float(-12345678901234560)
|
||||
float(4503599627370496)
|
||||
float(-4503599627370495)
|
||||
|
||||
========== PHP_ROUND_FLOOR ==========
|
||||
float(0.1234567890123456)
|
||||
float(-0.1234567890123456)
|
||||
float(12345678901234564)
|
||||
float(-12345678901234564)
|
||||
float(4503599627370495.5)
|
||||
float(-4503599627370495.5)
|
||||
float(12345678901234560)
|
||||
float(-12345678901234570)
|
||||
float(4503599627370495)
|
||||
float(-4503599627370496)
|
||||
|
||||
Reference in New Issue
Block a user