Skip to content

Commit 703ead5

Browse files
committed
Extend the maximum precision round can handle by one digit
Closes #12222
1 parent 3693ad2 commit 703ead5

File tree

2 files changed

+43
-43
lines changed

2 files changed

+43
-43
lines changed

ext/standard/math.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ PHPAPI double _php_math_round(double value, int places, int mode) {
199199
fesetround(cpu_round_mode);
200200

201201
/* This value is beyond our precision, so rounding it is pointless */
202-
if (fabs(tmp_value) >= 1e15) {
202+
if (fabs(tmp_value) >= 1e16) {
203203
return value;
204204
}
205205

ext/standard/tests/math/round_gh12143_expand-rounding-target.phpt

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -82,65 +82,65 @@ foreach ($testCases as $mode => $cases) {
8282
?>
8383
--EXPECT--
8484
========== PHP_ROUND_HALF_UP ==========
85-
float(0.12345678901234565)
86-
float(-0.12345678901234565)
87-
float(12345678901234564)
88-
float(-12345678901234564)
89-
float(4503599627370495.5)
90-
float(-4503599627370495.5)
85+
float(0.1234567890123457)
86+
float(-0.1234567890123457)
87+
float(12345678901234570)
88+
float(-12345678901234570)
89+
float(4503599627370496)
90+
float(-4503599627370496)
9191

9292
========== PHP_ROUND_HALF_DOWN ==========
93-
float(0.12345678901234565)
94-
float(-0.12345678901234565)
95-
float(12345678901234564)
96-
float(-12345678901234564)
97-
float(4503599627370495.5)
98-
float(-4503599627370495.5)
93+
float(0.1234567890123456)
94+
float(-0.1234567890123456)
95+
float(12345678901234560)
96+
float(-12345678901234560)
97+
float(4503599627370495)
98+
float(-4503599627370495)
9999

100100
========== PHP_ROUND_HALF_EVEN ==========
101-
float(0.12345678901234565)
102-
float(-0.12345678901234565)
103-
float(12345678901234564)
104-
float(-12345678901234564)
105-
float(4503599627370495.5)
106-
float(-4503599627370495.5)
101+
float(0.1234567890123456)
102+
float(-0.1234567890123456)
103+
float(12345678901234560)
104+
float(-12345678901234560)
105+
float(4503599627370496)
106+
float(-4503599627370496)
107107

108108
========== PHP_ROUND_HALF_ODD ==========
109-
float(0.12345678901234565)
110-
float(-0.12345678901234565)
111-
float(12345678901234564)
112-
float(-12345678901234564)
113-
float(4503599627370495.5)
114-
float(-4503599627370495.5)
109+
float(0.1234567890123457)
110+
float(-0.1234567890123457)
111+
float(12345678901234570)
112+
float(-12345678901234570)
113+
float(4503599627370495)
114+
float(-4503599627370495)
115115

116116
========== PHP_ROUND_AWAY_FROM_ZERO ==========
117117
float(0.1234567890123456)
118118
float(-0.1234567890123456)
119-
float(12345678901234568)
120-
float(-12345678901234568)
121-
float(4503599627370495.5)
122-
float(-4503599627370495.5)
119+
float(12345678901234570)
120+
float(-12345678901234570)
121+
float(4503599627370496)
122+
float(-4503599627370496)
123123

124124
========== PHP_ROUND_TOWARD_ZERO ==========
125-
float(0.12345678901234566)
126-
float(-0.12345678901234566)
127-
float(12345678901234564)
128-
float(-12345678901234564)
129-
float(4503599627370495.5)
130-
float(-4503599627370495.5)
125+
float(0.1234567890123456)
126+
float(-0.1234567890123456)
127+
float(12345678901234560)
128+
float(-12345678901234560)
129+
float(4503599627370495)
130+
float(-4503599627370495)
131131

132132
========== PHP_ROUND_CEILING ==========
133133
float(0.1234567890123456)
134134
float(-0.1234567890123456)
135-
float(12345678901234564)
136-
float(-12345678901234564)
137-
float(4503599627370495.5)
138-
float(-4503599627370495.5)
135+
float(12345678901234570)
136+
float(-12345678901234560)
137+
float(4503599627370496)
138+
float(-4503599627370495)
139139

140140
========== PHP_ROUND_FLOOR ==========
141141
float(0.1234567890123456)
142142
float(-0.1234567890123456)
143-
float(12345678901234564)
144-
float(-12345678901234564)
145-
float(4503599627370495.5)
146-
float(-4503599627370495.5)
143+
float(12345678901234560)
144+
float(-12345678901234570)
145+
float(4503599627370495)
146+
float(-4503599627370496)

0 commit comments

Comments
 (0)