1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-05 13:47:33 +02:00

Result::normalize() Fix select float in format of e-notation (#317) master (#321)

This commit is contained in:
Chrudos Vorlicek
2018-10-25 22:33:09 +02:00
committed by David Grudl
parent 12cbbb3140
commit dd2fd654be
2 changed files with 9 additions and 1 deletions

View File

@@ -463,8 +463,11 @@ class Result implements IDataSource
} elseif ($type === Type::FLOAT) { } elseif ($type === Type::FLOAT) {
$value = ltrim((string) $value, '0'); $value = ltrim((string) $value, '0');
$p = strpos($value, '.'); $p = strpos($value, '.');
if ($p !== false) { $e = strpos($value, 'e');
if ($p !== false && $e === false) {
$value = rtrim(rtrim($value, '0'), '.'); $value = rtrim(rtrim($value, '0'), '.');
} elseif ($p !== false && $e !== false) {
$value = rtrim($value, '.');
} }
if ($value === '' || $value[0] === '.') { if ($value === '' || $value[0] === '.') {
$value = '0' . $value; $value = '0' . $value;

View File

@@ -100,6 +100,11 @@ test(function () {
Assert::same(['col' => 1.0], $result->test(['col' => 1])); Assert::same(['col' => 1.0], $result->test(['col' => 1]));
Assert::same(['col' => 1.0], $result->test(['col' => 1.0])); Assert::same(['col' => 1.0], $result->test(['col' => 1.0]));
Assert::same(['col' => '1.1e+10'], $result->test(['col' => '1.1e+10']));
Assert::same(['col' => '1.1e-10'], $result->test(['col' => '1.1e-10']));
Assert::same(['col' => '1.1e+10'], $result->test(['col' => '001.1e+10']));
Assert::notSame(['col' => '1.1e+1'], $result->test(['col' => '1.1e+10']));
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu'); setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
Assert::same(['col' => 0.0], $result->test(['col' => ''])); Assert::same(['col' => 0.0], $result->test(['col' => '']));
Assert::same(['col' => 0.0], $result->test(['col' => '0'])); Assert::same(['col' => 0.0], $result->test(['col' => '0']));