diff --git a/ext/standard/math.c b/ext/standard/math.c index a633789cf0150..6ffa6a07c8607 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -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; } diff --git a/ext/standard/tests/math/round_gh12143_expand-rounding-target.phpt b/ext/standard/tests/math/round_gh12143_expand-rounding-target.phpt index 472d6a35f617d..71b3dc34f8fec 100644 --- a/ext/standard/tests/math/round_gh12143_expand-rounding-target.phpt +++ b/ext/standard/tests/math/round_gh12143_expand-rounding-target.phpt @@ -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)