diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php index 7cc3d5c805..acb75f2ca1 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php +++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php @@ -122,7 +122,11 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface $value = str_replace(',', $decSep, $value); } - $result = $formatter->parse($value, \NumberFormatter::TYPE_DOUBLE, $position); + if (!strstr($value, $decSep) && PHP_INT_SIZE === 8) { + $result = $formatter->parse($value, \NumberFormatter::TYPE_INT64, $position); + } else { + $result = $formatter->parse($value, \NumberFormatter::TYPE_DOUBLE, $position); + } if (intl_is_failure($formatter->getErrorCode())) { throw new TransformationFailedException($formatter->getErrorMessage()); diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php index e829871ec3..ef9c9738cb 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php @@ -433,4 +433,11 @@ class NumberToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase $transformer->reverseTransform("12\xc2\xa0345,678foo"); } + + public function testReverseTransformBigint() + { + $transformer = new NumberToLocalizedStringTransformer(null, true); + + $this->assertEquals(401657096594165125, (int) $transformer->reverseTransform((string) 401657096594165125)); + } }