[Form] Fix INT64 cast to float in IntegerType.

This commit is contained in:
Catalin Dan 2016-03-09 16:43:58 +02:00 committed by Nicolas Grekas
parent 5d8067f32d
commit 6b6073f685
2 changed files with 12 additions and 1 deletions

View File

@ -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());

View File

@ -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));
}
}