Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6b6073f

Browse files
ovrflonicolas-grekas
authored andcommitted
[Form] Fix INT64 cast to float in IntegerType.
1 parent 5d8067f commit 6b6073f

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,11 @@ public function reverseTransform($value)
122122
$value = str_replace(',', $decSep, $value);
123123
}
124124

125-
$result = $formatter->parse($value, \NumberFormatter::TYPE_DOUBLE, $position);
125+
if (!strstr($value, $decSep) && PHP_INT_SIZE === 8) {
126+
$result = $formatter->parse($value, \NumberFormatter::TYPE_INT64, $position);
127+
} else {
128+
$result = $formatter->parse($value, \NumberFormatter::TYPE_DOUBLE, $position);
129+
}
126130

127131
if (intl_is_failure($formatter->getErrorCode())) {
128132
throw new TransformationFailedException($formatter->getErrorMessage());

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,4 +433,11 @@ public function testReverseTransformDisallowsTrailingExtraCharactersMultibyte()
433433

434434
$transformer->reverseTransform("12\xc2\xa0345,678foo");
435435
}
436+
437+
public function testReverseTransformBigint()
438+
{
439+
$transformer = new NumberToLocalizedStringTransformer(null, true);
440+
441+
$this->assertEquals(401657096594165125, (int) $transformer->reverseTransform((string) 401657096594165125));
442+
}
436443
}

0 commit comments

Comments
 (0)