diff --git a/spec/std/json/lexer_spec.cr b/spec/std/json/lexer_spec.cr index 55437b44c0ec..7a2fe61de23c 100644 --- a/spec/std/json/lexer_spec.cr +++ b/spec/std/json/lexer_spec.cr @@ -114,4 +114,5 @@ describe JSON::Lexer do it_lexes_float "9000000000000000000.0", 9000000000000000000.0 it_lexes_float "9876543212345678987654321.0", 9876543212345678987654321.0 it_lexes_float "9876543212345678987654321e20", 9876543212345678987654321e20 + it_lexes_float "10.100000000000000000000", 10.1 end diff --git a/src/json/lexer.cr b/src/json/lexer.cr index 4057b81d1661..ab4d25baf5ff 100644 --- a/src/json/lexer.cr +++ b/src/json/lexer.cr @@ -283,6 +283,7 @@ abstract class JSON::Lexer integer *= 10 integer += char - '0' divisor *= 10 + digits += 1 char = next_char end float = integer.to_f64 / divisor