Parse number as floating-point if it doesn't fit in integer; try hard to use integer when possible though

This commit is contained in:
Maxim Kuleshov 2024-03-21 15:54:50 +03:00
parent dde7df8320
commit ce8fe5c99b
1 changed files with 8 additions and 2 deletions

View File

@ -293,10 +293,16 @@ class jzonParser
} }
$str_num = substr($this->in, $start, $this->c - $start); $str_num = substr($this->in, $start, $this->c - $start);
$fval = floatval($str_num);
$ival = intval($str_num);
if($is_float) if($is_float)
$out = floatval($str_num); $out = $fval;
else if(($ival < PHP_INT_MAX && $ival > PHP_INT_MIN) || strval($ival) === $str_num)
$out = $ival;
else else
$out = intval($str_num); $out = $fval;
} }
private function parse_true(&$out) private function parse_true(&$out)