Index: branches/5.2.x/core/kernel/utility/formatters/formatter.php =================================================================== diff -u -N -r16513 -r16565 --- branches/5.2.x/core/kernel/utility/formatters/formatter.php (.../formatter.php) (revision 16513) +++ branches/5.2.x/core/kernel/utility/formatters/formatter.php (.../formatter.php) (revision 16565) @@ -1,6 +1,6 @@ formatNumber($value); - $type_ok = preg_match('#int|integer|double|float|real|numeric|string#', $field_type); + $is_numeric_type = preg_match('#int|integer|double|float|real#', $field_type); - if ( $value != '' && $type_ok ) { - $ret = is_numeric($value); + if ( $value != '' && $is_numeric_type ) { + $tc_value = $value; + settype($tc_value, $field_type); - if ($ret) { - $f = 'is_' . $field_type; - settype($value, $field_type); - $ret = $f($value); - } + // Type casing is considered a success only, when type casted value visually looks the same. + return (string)$value === (string)$tc_value ? $tc_value : false; } } - return $ret ? $value : false; + return $value; } /**