Skip to content

Commit 01970ad

Browse files
committed
Merge branch 'PHP-8.5'
* PHP-8.5: ext/standard Fix round() for large integral doubles (#22461)
2 parents f7ce77e + 67d1476 commit 01970ad

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

‎ext/standard/math.c‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ PHPAPI double _php_math_round(double value, int places, int mode) {
170170
return value;
171171
}
172172

173+
if (places == 0 && value == trunc(value)) {
174+
return value;
175+
}
176+
173177
places = places < INT_MIN+1 ? INT_MIN+1 : places;
174178

175179
exponent = php_intpow10(abs(places));
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
gh-22410: round() preserves integral doubles
3+
--FILE--
4+
<?php
5+
var_dump(round(1.0));
6+
var_dump(round(-1.0));
7+
var_dump(round((float) 9003241321073828));
8+
var_dump(round((float) -9003241321073828));
9+
?>
10+
--EXPECT--
11+
float(1)
12+
float(-1)
13+
float(9003241321073828)
14+
float(-9003241321073828)

0 commit comments

Comments
 (0)