Skip to content

Commit f5ed09c

Browse files
[Form] NumberToLocalizedStringTransformer should return floats when possible
1 parent 8110612 commit f5ed09c

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: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ public function reverseTransform($value)
140140
throw new TransformationFailedException('I don\'t have a clear idea what infinity looks like');
141141
}
142142

143+
if (is_int($result) && $result === (int) $float = (float) $result) {
144+
$result = $float;
145+
}
146+
143147
if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($value, null, true)) {
144148
$length = mb_strlen($value, $encoding);
145149
$remainder = mb_substr($value, $position, $length, $encoding);

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,17 @@ public function testReverseTransformDisallowsTrailingExtraCharactersMultibyte()
434434
$transformer->reverseTransform("12\xc2\xa0345,678foo");
435435
}
436436

437-
public function testReverseTransformBigint()
437+
public function testReverseTransformBigInt()
438438
{
439439
$transformer = new NumberToLocalizedStringTransformer(null, true);
440440

441441
$this->assertEquals(PHP_INT_MAX - 1, (int) $transformer->reverseTransform((string) (PHP_INT_MAX - 1)));
442442
}
443+
444+
public function testReverseTransformSmallInt()
445+
{
446+
$transformer = new NumberToLocalizedStringTransformer(null, true);
447+
448+
$this->assertSame(1.0, $transformer->reverseTransform('1'));
449+
}
443450
}

0 commit comments

Comments
 (0)