Skip to content

Commit 0b208cb

Browse files
author
foaly-nr1
committed
String representation to avoid rounding errors, credit to @dmaicher
1 parent e53766d commit 0b208cb

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ private function round($number)
266266
if (null !== $this->precision && null !== $this->roundingMode) {
267267
// shift number to maintain the correct scale during rounding
268268
$roundingCoef = pow(10, $this->precision);
269-
$number = bcmul($number, $roundingCoef, 6);
269+
$number = (string) ($number * $roundingCoef);
270270

271271
switch ($this->roundingMode) {
272272
case self::ROUND_CEILING:

src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ public function reverseTransformWithRoundingProvider()
308308
array(1, '-123,45', -123.4, NumberToLocalizedStringTransformer::ROUND_DOWN),
309309
array(1, '-123,44', -123.4, NumberToLocalizedStringTransformer::ROUND_DOWN),
310310
array(2, '37.37', 37.37, NumberToLocalizedStringTransformer::ROUND_DOWN),
311+
array(2, '2.01', 2.01, NumberToLocalizedStringTransformer::ROUND_DOWN),
311312
// round halves (.5) to the next even number
312313
array(0, '1234,6', 1235, NumberToLocalizedStringTransformer::ROUND_HALF_EVEN),
313314
array(0, '1234,5', 1234, NumberToLocalizedStringTransformer::ROUND_HALF_EVEN),

0 commit comments

Comments
 (0)