Skip to content

Commit 5be664b

Browse files
committed
Simplified calculation for PHP_ROUND_HALF_DOWN mode
1 parent a9e64a1 commit 5be664b

File tree

1 file changed

+2
-8
lines changed

1 file changed

+2
-8
lines changed

ext/standard/math.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,9 @@ static inline double php_round_helper(double value, int mode) {
105105
break;
106106
case PHP_ROUND_HALF_DOWN:
107107
if (value >= 0.0 ) {
108-
tmp_value = floor(value + 0.5);
109-
if(value + 0.5 == tmp_value) {
110-
tmp_value = tmp_value - 1;
111-
}
108+
tmp_value = copysign(ceil(value - 0.5), value);
112109
} else {
113-
tmp_value = ceil(value - 0.5);
114-
if(value - 0.5 == tmp_value) {
115-
tmp_value = tmp_value + 1.0;
116-
}
110+
tmp_value = copysign(floor(value + 0.5), value);
117111
}
118112
break;
119113
case PHP_ROUND_CEILING:

0 commit comments

Comments
 (0)