diff --git a/ext/bcmath/bcmath.c b/ext/bcmath/bcmath.c index 1b4dd331c9b..832d2758fe9 100644 --- a/ext/bcmath/bcmath.c +++ b/ext/bcmath/bcmath.c @@ -1801,8 +1801,6 @@ PHP_METHOD(BcMath_Number, round) bc_num ret = NULL; bc_round(intern->num, precision, rounding_mode, &ret); - bc_rm_trailing_zeros(ret); - bcmath_number_obj_t *new_intern = bcmath_number_new_obj(ret, ret->n_scale); RETURN_OBJ(&new_intern->std); } diff --git a/ext/bcmath/tests/number/methods/round_has_trailing_zeros.phpt b/ext/bcmath/tests/number/methods/round_has_trailing_zeros.phpt new file mode 100644 index 00000000000..f526f3b2f91 --- /dev/null +++ b/ext/bcmath/tests/number/methods/round_has_trailing_zeros.phpt @@ -0,0 +1,72 @@ +--TEST-- +BcMath\Number round() - has trailing zeros +--EXTENSIONS-- +bcmath +--FILE-- +name} ==========\n"; + foreach ([ + ['0.00', 1], + ['0.1', 5], + ['-0.300', 5], + ['1.995', 2], + ] as [$value, $precision]) { + $number = new BcMath\Number($value); + $output = 'value is '; + $output .= str_pad($value, 6, ' ', STR_PAD_RIGHT) . ', '; + $output .= "precision is {$precision}: "; + $output .= $number->round($precision, $mode) . "\n"; + echo $output; + } + echo "\n"; +} +?> +--EXPECT-- +========== HalfAwayFromZero ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 2.00 + +========== HalfTowardsZero ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 1.99 + +========== HalfEven ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 2.00 + +========== HalfOdd ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 1.99 + +========== TowardsZero ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 1.99 + +========== AwayFromZero ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 2.00 + +========== NegativeInfinity ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 1.99 + +========== PositiveInfinity ========== +value is 0.00 , precision is 1: 0.0 +value is 0.1 , precision is 5: 0.10000 +value is -0.300, precision is 5: -0.30000 +value is 1.995 , precision is 2: 2.00