Skip to content

Commit d07e18c

Browse files
jimmy4o4krowinski
authored andcommitted
Fixed trimming of trailing zeros and dot (leaving trailing zeros when no dot is present). (#29)
1 parent 9d435fd commit d07e18c

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/BCMathExtended/BC.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,24 @@ public static function convertScientificNotationToString($number)
5555
} else {
5656
$number = self::mul($pow, $regs[1], $scale);
5757
}
58-
// remove unnecessary 0 from 0.000 is a 0
59-
$number = rtrim($number, '0');
60-
// if you remove 0 you must clean dot
61-
$number = rtrim($number, '.');
58+
// remove unnecessary 0 and dot from 0.000 is a 0
59+
$number = self::trimTrailingZeroes($number);
6260
}
6361

6462
return self::checkNumber($number);
6563
}
6664

65+
/**
66+
* @param int|string|float $number
67+
* @return void
68+
*/
69+
private static function trimTrailingZeroes($number) {
70+
if (false !== strpos($number, '.')) {
71+
$number = rtrim($number, '0');
72+
}
73+
return rtrim($number, '.') ?: '0';
74+
}
75+
6776
/**
6877
* @param int|string|float $number
6978
* @return int
@@ -441,7 +450,7 @@ public static function floor($number)
441450
*/
442451
private static function checkIsFloatCleanZeros(&$number)
443452
{
444-
return false !== strpos($number = rtrim(rtrim($number, '0'), '.'), '.');
453+
return false !== strpos($number = self::trimTrailingZeroes($number), '.');
445454
}
446455

447456
/**

tests/Unit/BCTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public function scientificNotationProvider()
7272
'-7.491687627771507445838618797279002344648652959333491e+8',
7373
],
7474
['1.3333', '0.13333e+01'],
75+
['100', '1e+2'],
7576
// some rubbish..
7677
['23', '23.1.23.0e+0..3123131'], //hmm
7778
['345600000000', '3.456e11'],

0 commit comments

Comments
 (0)